Как создать форму, в которой поле зависит от значения другого поля в Symfony Forms?

279
14 марта 2017, 16:34

Я создаю форму регистрации с помощью Symfony Forms и значение одного из полей влияет на другие (Conditional Fields) — некоторые поля становятся обязательными и их надо проверять. Например, есть два типа аккаунтов (account_type): company и personal. Если выбран company, то должно появиться поле company_name.

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

В настоящее время я уже прочитал «How to Dynamically Modify Forms Using Form Events» (из документации), но похоже это не совсем то.

Использую компонент Forms (3.1.7) внутри WordPress плагина.

class SignUpType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('type', Type\ChoiceType::class, array(
            'expanded' => true,
            'multiple' => false,
            'required' => true,
            'choices' => array(
                __('Personal', Plugin::NAME) => 'personal',
                __('Company', Plugin::NAME) => 'company',
            ),
            'data' => 'company',
        ))
        ->add('company_name', Type\TextType::class, array(
            'label' => __('Company Name', Plugin::NAME),
            'required' => true,
            'constraints' => array(
                new Constraints\NotBlank(),
                new Constraints\Length(array('min'=> 2)),
            ),
        ));
    }
}
READ ALSO
PHP Startup: Unable to load dynamic library php_sqlite3.dll

PHP Startup: Unable to load dynamic library php_sqlite3.dll

Доброго всем дняПоставил новенький xubuntu 16

204
Как на php/nodejs сделать роутер c вложенными url?

Как на php/nodejs сделать роутер c вложенными url?

Как правильно сделать роутер что бы url был вложенным, и количество вложенности нам не известноМожно вот так (nodejs)

186
Как дебажить php проект?

Как дебажить php проект?

Вопрос следующий - есть проект на PHP, стоит xdebug, есть форма

269
Не работает mod_rewrite

Не работает mod_rewrite

Недавно решил перейти с denwer на wampИмеется

192