带有一个默认字段的 Symfony CollectionType 字段

fab*_*osz 7 php forms symfony-forms symfony

我需要您对 CollectionType 字段的建议。

我已经使用这个创建了我的集合类型字段:Symfony CollectionType Field
一切正常。即使使用 JQuery 动态添加字段也能正常工作。

但是有一个问题。

我不知道如何在每次呈现集合字段时添加一个字段。现在我的页面加载后,我的收藏栏是空的。但是,我希望在每个页面加载后从集合中获取第一个字段。

如何实现这一目标?我应该使用 Javascript 还是某种形式的事件?非常欢迎在文档或代码片段中找到正确章节的任何提示。

OK *_*ure 1

我想我记得点击了这个,我最终在第一次加载时创建了一个空子级的数据。

我无法对此进行测试,但我认为以下内容应该根据您的表单具体情况起作用。

public function someAction()
{
    $data = [];
    $data['collection_name'][] = ['text' => ''];

    $form = $this->createForm(SomeType::class, $data);

    return $this->templating->renderResponse('template.twig.html', [
        'form' => $form,
    ]);
}
Run Code Online (Sandbox Code Playgroud)

添加'required' => false,到集合的表单配置应该可以防止保留空项目。

您还可以研究表单 Type 类上的 configureOptions 方法:

public function configureOptions(OptionsResolver $resolver)
{
    $data = [];
    $data['collection_name'][] = ['text' => ''];
    $resolver->setDefaults(array(
        'empty_data' => $data,
    ));
}
Run Code Online (Sandbox Code Playgroud)