Я знаю, что нет чистого способа сделать это после того, как форма была построена с использованием FormEvents, но есть ли способ перенаправить параметры, переданные в форму с использованием FormTypeExtensionInterface::buildForm
прежде чем он будет полностью построен?
например: я буду использовать это, чтобы установить несколько опций для определенных значений, когда в форме задана другая опция, например: когда параметр "helper"
установлен верно, установите для опции "label"
значение "helper" и установите "disabled"
option в true
Итак, что вы можете сделать, это передать эту форму в свою форму при ее создании. Например, в вашем контроллере:
$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,
));
}
Единственное, это глобальный вариант для всей формы. Вы имели в виду, что хотите этот вариант для каждого отдельного поля?
createForm()
и сделать что-то передcreateForm()