Можно ли отключить проверку на стороне сервера (на стороне сервера) для указанного поля?
Когда я пытаюсь отправить форму с динамически загруженными параметрами, я получаю сообщение об ошибке «ОШИБКА: это значение недопустимо».
Я думаю, что Symfony проверяет, находится ли мое значение в объявленном списке по умолчанию (в моем случае это пустой список), если не возвращает false.
Это сбивает с толку, но это поведение на самом деле не связано с проверкой, поскольку оно вызвано «ChoiceToValueTransformer», который действительно ищет записи в вашем предварительно объявленном списке. Если ваш список пуст или вы хотите отключить преобразователь, вы можете просто сбросить его.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('yourField', 'choice', array('required'=>false));
//more fields...
$builder->get('yourField')->resetViewTransformers();
}
Затем вступит в действие пользовательская проверка (если она существует).
Я нашел решение
Форма Symfony2.4 «Эта форма не должна содержать лишних полей» Ошибка
Больше подробностей: http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-dynamic-form-modification-suppressing-form-validation
Добавьте это внутри 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]
)
}
}
);