Таким образом, при использовании построителя форм у вас есть доступ к:
$form->isSubmitted()
и
$form->isValid()
В результате вы можете сделать что-то вроде:
if ($form->isSubmitted() && $form->isValid()) {
// save to database
}
Мы хотим проверить, отправлена ли форма, прежде чем мы проверим ее действительность, как если бы форма не была отправлена, нет необходимости проверять ее действительность, поскольку она будет ложной.
Это предотвратит ошибку MySQL.потому что ваша форма технически недействительна, и вы пытаетесь сбросить неверные данные.Очевидно, что мы хотим сохранить наши данные только тогда, когда они действительны.
Конечно, если форма не удалась, вы можете вернуть представление и в шаблон, у вас есть доступ к
{{ form_errors() }}
Это будетвозможно, охватит то, что вам нужно, но вы также можете передать в свой шаблон что-то вроде
'formHasErrors' => $form->isSubmitted() && !$form->isValid(),
и затем в своем шаблоне
{% if formHasErrors %}
Что-то еще, что вы можете захотеть сделать, это позволяет вамиметь больше контроля над своими полями, выделите поле, как показано ниже:
{{ form_start(form) }}
{{ form_label(form.name) }}
{{ form_errors(form.name, {'attr': {'class': 'form-input'}}) }}
{{ form_widget(form.name) }}
{{ form_end(form) }}
Очень важно, чтобы вы ловили ошибки и обрабатывали их правильно.Ваша реализация не проверила правильность формы, поэтому вы получили 500 ошибок.