使用FormTypeExtensions修改字段选项

时间:2015-01-07 12:18:36

标签: php forms symfony

我知道在使用FormEvents构建表单之后没有干净的方法来执行此操作但是有没有办法在完全构建之前使用FormTypeExtensionInterface::buildForm来维护传递给表单的选项?

例如:当在表单中设置另一个选项时,我将使用此选项将多个选项设置为特定值,例如:当选项"helper"设置为true时,将"label"选项设置为“helper”并且将"disabled"选项设为true

1 个答案:

答案 0 :(得分:0)

因此,您可以执行的操作是在创建表单时将选项传递给表单。例如,在您的控制器中:

$form = $this->createForm(new YourFormType(), null, array('helper' => true));

然后在buildForm函数中:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('myfield', null, array(
            'label'    => ($options['helper']) ? 'helper' : 'mylabel',
            'disabled' => ($options['helper']) ? true : false,
        ))
    ;
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'helper' => false,
    ));
}

唯一的是,这是整个表单的全局选项。你的意思是你想为每个领域都想要这个选项吗?