页面上显示的每个实体的表单


A form for each entity displayed on page

我的问题很简单,但我找不到任何帮助。。。我有小实体,与一对一的关系

任务
id
名称
user_id(FK)

用户
id
名称

在我的页面上,我显示"任务"表上现有的所有任务(使用经典的findAll()函数),我想在每个任务旁边显示一个简短的表单,让用户填写自己的名字并保存它。

类似的东西:

Task #1 -- [input text for the username] [submit button]
Task #2 -- [input text for the username] [submit button]
Task #3 -- [input text for the username] [submit button]
Task #4 -- [input text for the username] [submit button]
...

Symfony2能做到这一点吗?使用实体集合?

谢谢
Benjamin

您需要为每个对象创建一个表单视图,然后将其存储在一个变量中以显示在trick中。

   // in your php
   $forms = array();
   for ( $tasks as $task )
   {
      $form = $this->createForm( new formType() , $task );
      $forms[] = $form->createView();
   }
   return $this->render ( "path.to.html.twig", array ( "forms" => $forms ) );

   // in your twig 

定义宏http://twig.sensiolabs.org/doc/tags/macro.html

{% macro drawForms(forms) %}
    {% for form in forms %}
          {{ form_errors(form) }}
          {{ form_start(form) }}
          <button type="submit">Submit / Save </button>
          {{ form_end(form) }}
    {% endfor %}
{% endmacro %}
 // call of your macro in your html . Import here state that our macro is in the same twig. otherwise you have to define in which twig the macro is located
 {% import _self as macro %}
 {{ forms.drawForms( forms ) }}

宏函数在这里不是强制性的:你可以直接在你的小树枝中调用循环,但这是排序代码的好方法,特别是当你想在小树枝中生成一些递归代码时:)