#php #symfony #symfony-forms
#php #symfony #symfony-forms
Вопрос:
У меня есть следующая форма в Symfony 2.7:
$form = $this->createFormBuilder($entity)
->add('laboratorio',null, array('required'=>false)->getForm();
«laboratorio» — это поле типа entity. Но когда я отправляю форму без выбора значения, я получаю следующую ошибку:
An exception occurred while executing
'SELECT n0_.id AS id0, n0_.codigo AS codigo1,
n0_.nombre AS nombre2 FROM nom_laboratorio
n0_ WHERE n0_.id IN (?)' with params [""]:
Я думаю, что Symfony не должен пытаться найти объект по его идентификатору, когда необязательное поле пустое.
Даже я пытаюсь использовать $this-> submit($request, true) вместо $this-> handleRequest($request) в контроллере, но ничего не меняется.
Есть что-то, что я игнорирую?
Ответ №1:
Пожалуйста, попробуйте использовать опцию empty_data.
$form = $this->createFormBuilder($entity)
->add('laboratorio',null, array(
'required' => false,
'placeholder' => 'Choose the laboratorio',
'empty_data' => null,
)->getForm();
Комментарии:
1. empty_data работает только с допустимым целочисленным значением. Я помещаю в лоток новый пустой экземпляр класса, но ничего.
2. Что именно происходит, когда вы выбираете опцию «Выбрать лабораторию»?
3. При ’empty_data’ => null ошибка базы данных удаляется.
4. Я пробовал empty_data placeholder в Symfony 2.7, и это сделало свое дело. В Symfony < 2.6 вы должны использовать empty_value вместо заполнителя. Пожалуйста, убедитесь, что в параметр post передается значение null, если вы выбираете параметр placeholder / empty_value.