Symfony2表单选择扩展默认选择

0wi1tuuw  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(123)

我在symfony2中做了一个过滤器表单,我尝试预先选择一些字段。
我有两个选择:

$formBuilder->add('first', 'choice',
    array('choices' => $choiceFirst,
    'expanded' => false,
     'multiple' => true,
     'data' => explode(' ', $this->getRequest()->get('first'))
));
$formBuilder->add('second', 'choice',
    array('choices' => $choiceSecond,
    'expanded' => true,
    'multiple' => true,
    'data' => explode(' ', $this->getRequest()->get('second'))));

对于第一个没有展开的选项,通过url传递的数据是预先选择的。但是对于第二个展开的选项则不是。
有什么方法可以从字段选项中预先选择复选框?

hvvq6cgz

hvvq6cgz1#

必须提供选定值的数组作为多选字段的数据。
编辑:不相关的回答,我的错误
尝试提供一个key =〉布尔数组,因为选中状态依赖于布尔值。
我认为你只需要在你的数组中放入检查过的值,所以那些为真的值;)

bttbmeg0

bttbmeg02#

我发现这个问题的最佳解决方案是在生成表单之前简单地为对象设置默认值。
例如:$myEntity->setMyfieldchoice(1);
这样symfony就会明白这个值是默认值(我在select字段上使用过)。
希望这能有所帮助!

ruoxqz4g

ruoxqz4g3#

试试看:

$formBuilder->add('first', 'choice',
   array('choices' => array('0' => 'first option', '1' => 'second option'),
   'expanded' => false,
   'multiple' => true,
   'data' => explode(' ', $this->getRequest()->get('first'))
));

并查看:

{{ form_widget(form.first.0) }}
{{ form_widget(form.first.1) }}

对我有用。

相关问题