Отключить проверку бэкенда для поля выбора в Symfony 2 Type

Можно ли отключить проверку на стороне сервера (на стороне сервера) для указанного поля?

Когда я пытаюсь отправить форму с динамически загруженными параметрами, я получаю сообщение об ошибке «ОШИБКА: это значение недопустимо».

Я думаю, что Symfony проверяет, находится ли мое значение в объявленном списке по умолчанию (в моем случае это пустой список), если не возвращает false.

11

Решение

Это сбивает с толку, но это поведение на самом деле не связано с проверкой, поскольку оно вызвано «ChoiceToValueTransformer», который действительно ищет записи в вашем предварительно объявленном списке. Если ваш список пуст или вы хотите отключить преобразователь, вы можете просто сбросить его.

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('yourField', 'choice', array('required'=>false));

//more fields...

$builder->get('yourField')->resetViewTransformers();
}

Затем вступит в действие пользовательская проверка (если она существует).

25

Другие решения

Добавьте это внутри buildForm метод в вашем классе типа формы, чтобы вы могли проверить значение поля ввода, а не выбор из значения поля выбора;

$builder->addEventListener(
FormEvents::PRE_SUBMIT,

function (FormEvent $event) {
$form = $event->getForm();

if ($form->has('field')) {
$form->remove('field');
$form->add(
'field',
'text',
['required' => false]
)
}
}
);
0
По вопросам рекламы [email protected]