Symfony 4 в качестве бэкэнда, Angular в качестве внешнего интерфейса. У меня есть простая форма - скажем, два поля, которые не могут быть пустыми.
Организация:
/**
* @var string
*
* @ORM\Column(name="signature", type="string", length=32, unique=true)
* @JMSSerializer\Expose
*/
private $signature;
/**
* @var int
*
* @ORM\Column(name="status", type="integer")
* @JMSSerializer\Expose
*/
private $status;
Так что по умолчанию NOT NULL.
После оставления одного из этих полей пустым и отправки формы я получаю 500 ошибок. Dev.log говорит: «Нарушение ограничения целостности: 1048« Статус »столбца не может быть нулевым». Очевидно. Но как отловить эту ошибку? Или, может быть, просто запретить отправку формы с пустыми полями на угловой стороне?
Мой контроллер:
public function postAction(Request $request)
{
$form = $this->createForm('App\Form\ItemType', null, [
'csrf_protection' => false,
]);
$form->submit($request->request->all());
if (!$form->isValid()) {
return $form;
}
...
Как и предлагалось в другом месте, я мог бы отправить массив ошибок:
$errors = [];
foreach ($form->getErrors(true) as $error) {
if ($error->getOrigin()) {
$errors[$error->getOrigin()->getName()][] = $error->getMessage();
}
}
Но метод isValid () никогда не вызывается.
КСТАТИ) Это хорошая идея, чтобы вернуть форму в качестве ответа в этом случае? Я видел это в каком-то уроке. Но, возможно, вернувшись
new View(null, Response::HTTP_BAD_REQUEST)
с какой-то дополнительной информацией будет лучше?