2015-07-11 72 views
0

我正在用symfony2创建一个简单的博客系统。每个博客必然会有一定数量的标签Symfony2,动态刷新表格选项

创建新博客文章时,可以使用复选框选择标签。现在我想能够动态添加新的标签复选框到表单中。

AJAX部分已完成并正在工作,我可以向标记实体添加新的标记名称并将新的复选框附加到窗体上。

问题是,当我提交表单时,symfony2无法识别新添加的标签,因为它们还不属于标签实体(在生成表单时)。

例如:提交表单后,我转储:

$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

确保你坚持新添加的标签提交表单之前,和复选框有正确的名称和值。

名称应该像“post [tags] []”,值应该是标签实体的数据库ID。