【发布时间】:2016-09-05 10:04:20
【问题描述】:
我收到了一些表单错误,但我很难理解错误是什么,因此表单无效。我正在使用 Symfony 2.7 并使用错误;
$errors = $form->getErrors(true, true);
我希望将它们作为字符串传递给我们的日志记录应用程序,但是这些当前以<empty> 的形式出现。
【问题讨论】:
标签: php validation symfony error-handling
我收到了一些表单错误,但我很难理解错误是什么,因此表单无效。我正在使用 Symfony 2.7 并使用错误;
$errors = $form->getErrors(true, true);
我希望将它们作为字符串传递给我们的日志记录应用程序,但是这些当前以<empty> 的形式出现。
【问题讨论】:
标签: php validation symfony error-handling
试试这个(string)$form->getErrors(),否则如果你不把它转换成一个字符串,这将是一个长得吓人的数组,乍一看可能没有意义。
如果你想知道已经发生的错误总数,使用这个,
$form->count($form->getErrors())
【讨论】:
可以试试
$form->getErrorsAsString()
当无法从表单中检索错误时(主要是嵌套多个表单时),我使用以下 2 个自定义 utils 函数:
public function getErrorMessagesFromUnbubblingForm(\Symfony\Component\Form\FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $key => $error) {
$template = $error->getMessageTemplate();
$parameters = $error->getMessageParameters();
foreach ($parameters as $var => $value) {
$template = str_replace($var, $value, $template);
}
$errors[$key] = $template;
}
if ($form->count()) {
foreach ($form as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = $this->getErrorMessagesFromUnbubblingForm($child);
}
}
}
return $errors;
}
public function getFlatErrorMessagesFromUnbubblingForm(\Symfony\Component\Form\FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $error) {
$template = $error->getMessageTemplate();
$parameters = $error->getMessageParameters();
foreach ($parameters as $var => $value) {
$template = str_replace($var, $value, $template);
}
$errors[] = $template;
}
if ($form->count()) {
foreach ($form as $child) {
if (!$child->isValid()) {
$errors = $this->getFlatErrorMessagesFromUnbubblingForm($child);
}
}
}
return $errors;
}
【讨论】: