Чтобы получить правильные (переводимые) сообщения, в настоящее время использующие SF 2.6.3, вот моя последняя функция (как кажется, больше ничего не работает):
private function getErrorMessages(\Symfony\Component\Form\Form $form) {
$errors = array();
foreach ($form->getErrors(true, false) as $error) {
// My personnal need was to get translatable messages
// $errors[] = $this->trans($error->current()->getMessage());
$errors[] = $error->current()->getMessage();
}
return $errors;
}
как Form :: getErrors () теперь метод возвращает экземпляр FormErrorIterator , если только вы не переключите второй аргумент ($ flatten) на true .(Затем он вернет экземпляр FormError , и вам придется вызывать метод getMessage () напрямую, без использования метода current ():
private function getErrorMessages(\Symfony\Component\Form\Form $form) {
$errors = array();
foreach ($form->getErrors(true, true) as $error) {
// My personnal need was to get translatable messages
// $errors[] = $this->trans($error->getMessage());
$errors[] = $error->getMessage();
}
return $errors;
}
)
Самое главное - установить первый аргумент в значение true, чтобы получить ошибки.Если оставить второй аргумент ($ flatten) равным его значению по умолчанию ( true ), будет возвращено FormError экземпляров, в то время как он вернет FormErrorIterator экземпляров, если задано значение false.