如何在动态禁用的formtype中禁用选择选项?

时间:2014-10-21 18:03:32

标签: symfony

我在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
        }
    }
}

如何将此选项设置为禁用?

1 个答案:

答案 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