Решение, которое я могу предложить вам, - это вторая, явная проверка вашего объекта и отправка ошибок в ваш шаблон.Таким образом, первая неявная проверка выполняется внутри объекта формы, и ошибки привязываются к полям (не используйте всплывающее окно с ошибками).Вторая проверка даст вам итератор на ошибки, и вы можете передать этот итератор в ваш шаблон, который будет отображаться в верхней части формы.После этого у вас будут ошибки в каждом поле, а также в верхней части формы.
Я предлагаю вам это на основе этого вопроса о StackOverflow.Отметьте этот конкретный ответ.
Вот набросок кода для контроллера (я ничего не тестировал):
// Code in a controller
public acmeFormAction(...) {
// Form and object code
// Get a ConstraintViolationList
$errors = $this->get('validator')->validate( $user );
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
'errors' => errors,
));
}
и код в шаблоне:
{# Code in a twig template #}
<ul id="error-list">
{% for error in errors %}
<li> error.message </li>
{% endfor %}
</ul>
{# Display your form as usual #}
Если помнитеправильно, есть способ извлечь все ошибки из формы, и в каждом поле по-прежнему должны быть установлены ошибки.Насколько я помню, это специальный атрибут в виде формы что-то вроде form.errors
.Но я не могу вспомнить или найти какую-либо информацию об этом.Итак, на данный момент это лучший подход, который я могу найти.