Изменение параметров поля с помощью FormTypeExtensions

0

Я знаю, что нет чистого способа сделать это после того, как форма была построена с использованием FormEvents, но есть ли способ перенаправить параметры, переданные в форму с использованием FormTypeExtensionInterface::buildForm прежде чем он будет полностью построен?

например: я буду использовать это, чтобы установить несколько опций для определенных значений, когда в форме задана другая опция, например: когда параметр "helper" установлен верно, установите для опции "label" значение "helper" и установите "disabled" option в true

  • 0
    Что вы пытаетесь сделать именно? Вы можете передать опции для createForm() и сделать что-то перед createForm()
  • 0
    @JasonRoman Я добавил пример использования в вопросе «Описание».
Теги:
forms

1 ответ

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,
    ));
}

Единственное, это глобальный вариант для всей формы. Вы имели в виду, что хотите этот вариант для каждого отдельного поля?

  • 0
    Я хочу, чтобы этот параметр вступил в силу для всех типов форм (полей). Поэтому мне не нужно проверять этот параметр каждый раз, когда я создаю новую форму.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню