我正在使用symfony2创建一个简单的博客系统。每个博客帖子都绑定了一定数量的标签。
在创建新博文时,可以使用复选框选择标签。现在我希望能够在表单中动态添加新的标签复选框。
AJAX部分已完成并正常工作,我可以向Tag实体添加新标签名称,并将新复选框附加到表单。
问题是当我提交表单时,symfony2无法识别新添加的标签,因为它们尚未属于Tag实体(在生成表单时)。
例如:提交表单后,我转储:
$tags = $form->get('tags')->getData();
控制器忽略通过ajax添加的标记。
我知道必须以某种方式解决事件,我已经阅读了这个文档:http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html但是无法弄清楚如何针对这种特定情况实现它。
以下是“PostType”的表单构建器:
$builder
->add('title')
->add('content', 'textarea')
->add('tags', 'entity', array(
'class' => 'Bundle:Tag',
'property' => 'name',
'multiple' => true,
'expanded' => true,
))
->add('save', 'submit')
;
答案 0 :(得分:0)
您可以尝试使用此功能:Form Collection
答案 1 :(得分:0)
确保在提交表单之前保留新添加的标签,并且复选框具有正确的名称和值。
名称应该类似于“post [tags] []”,值应该是Tag实体的数据库ID。