我在symfony2.5中有一个表单类型,它有一个选择类型,它有很多动态设置的选项
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('service_id', 'choice', array(
'label' => 'Service',
'choices' => $this->getChoice()
));
.......
.......
}
protected function getChoice()
{
$choices = array();
$options = array(
'1' => 'test1',
.............
);
foreach($options as $key => $option)
{
if($key%2 == 0) {
....
} else {
////disabled choice
}
}
}
如何将此选项设置为禁用?
答案 0 :(得分:1)
这可以使用表单事件侦听器和finishView
方法完成。在此之前已经回答过类似的问题 - How to disable specific item in form choice type?
请注意,PRE_BIND
事件已被弃用。请改用PRE_SUBMIT
。
引用:
引入了事件PRE_SUBMIT,SUBMIT和POST_SUBMIT Symfony 2.3。之前,它们被命名为PRE_BIND,BIND和POST_BIND。
http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html