在树枝模板中渲染自定义formType选项

时间:2016-11-28 08:55:32

标签: php symfony twig symfony-2.8

我在Symfony 2.8中遇到这个问题:我无法使用我的查询传递给表单选项来呈现自定义变量。

请参阅以下代码我尝试过的内容:

这是我的控制者:

public function buildForm(FormBuilderInterface $builder, array $options) {      
    $builder->add('bar', EntityType::class, array(
        'class' => 'AppBundle:Foo',
        'choices' => $options['attr']['FooOnes'],
        'required' => true,                    
        'property' => 'name',
        'attr' => array(
            'class' => 'col-lg-2 control-label text-center'
         )
    ))

这是我的formType:

{% for foo in form.bar %}
    {{ form_widget(foo) }}
{% endfor %}

最后,我的树枝模板

for

...如果没有for块,则会呈现表单。使用public function __toString()块时,出现此错误:

  

在第277行的form_div_layout.html.twig中,在呈现模板期间抛出了异常(“Catchable Fatal Error:类Doctrine \ ORM \ PersistentCollection的对象无法转换为字符串”)。

PS:我已在实体中定义了{{1}}

1 个答案:

答案 0 :(得分:1)

如果不对代码进行测试,就像现在设置它一样,您将渲染一个select元素。因此,循环使用它没有任何意义。

您需要将属性expanded设置为true才能使用for循环。这样,您将呈现单选按钮或复选框,具体取决于多个值。

对于复选框:

public function buildForm(FormBuilderInterface $builder, array $options) {      
$builder
            ->add('bar', EntityType::class, array(
                'class' => 'AppBundle:Foo',
                'choices' => $options['attr']['FooOnes'],
                'required' => true,
                'expanded' => true,
                'multiple' => true,
                'property' => 'name',
                'attr' => array(
                    'class' => 'col-lg-2 control-label text-center'
                )
            ))