Я предлагаю подход, используемый Magento.
В вашем контроллере есть метод formAction, который отображает форму, а затем другое действие formPostAction, которое обрабатывает отправку формы.
Если проверка не удалась, например, вы должны создать правильное сообщение об ошибке, затем сохранить в сеансе массив с только что отправленными данными формы и перенаправить на страницу формы.
Метод formAction () должен иметь немного логики для обработки данных в сеансе, очищая те, которые когда-то использовались для вывода, во избежание проблем безопасности.