Symfony2,动态刷新表单选择

时间:2015-07-11 21:04:29

标签: ajax forms symfony

我正在使用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')
    ;

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此功能:Form Collection

答案 1 :(得分:0)

确保在提交表单之前保留新添加的标签,并且复选框具有正确的名称和值。

名称应该类似于“post [tags] []”,值应该是Tag实体的数据库ID。