symfony2:在控制器中获取表单错误

时间:2016-03-16 13:00:08

标签: symfony symfony-forms

我通过 AJAX CALL 验证了我的表单,但无法检索“错误消息”。

这就是我所说的:

$newRdvForm = $this->createForm(new RdvType());

$newRdvForm->handleRequest($request);

if ($newRdvForm->isValid()) { 
   // set of instructions to be performed when the form is valid
}
else {

   $errors= array();

   foreach ($newRdvForm->getErrors() as $key => $error) {
        $errors[$key] = $error->getMessage();
   }   

   $response = new Response(json_encode($errors));
   $response->headers->set('Content-Type', 'application/json');

   return $response; 

}

我使用了symfony 2.7。上面的代码不会检索错误消息。

3 个答案:

答案 0 :(得分:4)

也许你的myte是从多个嵌套类型构建的?尝试使用getErrors(true)

http://symfony.com/doc/current/components/form/introduction.html#accessing-form-errors

答案 1 :(得分:1)

/**
 * get Error Messages From Form.
 * @param \Symfony\Component\Form\Form $form
 * @return array
 */
protected function getErrorMessages(\Symfony\Component\Form\Form $form) {
  $errors = array();
 if ($form->count() > 0) {
    foreach ($form->all() as $child) {
        if (!$child->isValid()) {
           $errors[$child->getName()] = (String) $form[$child->getName()]->getErrors();
        }
     }
 }
 return $errors;
}

答案 2 :(得分:0)

有关表格中的错误列表,您可以将其保留在数组中

   foreach ($form->getErrors(true, false) as $error) {
                $errors[] = $error->current()->getMessage();
            }