我在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}}
答案 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'
)
))