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

时间:2014-09-01 15:02:52

标签: php forms symfony

我的问题很简单,但我找不到任何帮助... 我有小实体,有OneToOne关系

任务
ID
命名
user_id(FK)

用户
ID
名称

在我的页面上,我显示了'Task'表中存在的所有任务(使用经典的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可以实现这一点吗?使用实体集合?

感谢。
本杰明

1 个答案:

答案 0 :(得分:0)

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

   // 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 ) }}

宏函数在这里不是必需的:你可以直接在你的树枝中调用你的循环,但这是订购你的代码的好方法,特别是当你想在树枝上制作一些递归代码时:)