Symfony2。4日期验证不起作用

时间:2014-06-15 18:55:54

标签: validation date symfony

我需要完成一些验证,例如,在日期字段中。我已经配置了config.sml和config_dev.xml来启用文档中的注释。这是我的代码:

实体:

/** *************************************************
 * @var date
 *
 * @Assert\Date(message="Fecha de Nacimiento incorrecta")
 * @ORM\Column(name="dfec_nacimiento", type="date", nullable=true)
 */
private $fecNacimiento;

/**
 * @param date $fecNacimiento
 */
public function setFecNacimiento($fecNacimiento)
{
    $this->fecNacimiento = $fecNacimiento;
}

/**
 * @return date
 * @Assert\Date()
 */
public function getFecNacimiento()
{
    return $this->fecNacimiento;
}

控制器:

[..]
                $form = $this->createForm(new IncidenciaType($numSocio,
                                                             null,
                                                             $listadoTiposIncidencia,
                                                             $listadoCentros,
                                                             $listadoTiposDoc,
                                                             $listadoTiposVia),
                                          $incidencia);
                $form->handleRequest($request);//bind del formulario con el request
                if ($form->isValid()) {
                //Some code
                } else {
                  } else {
                    $errors = array();

                    if ($form->count() > 0) {
                        foreach ($form->all() as $child) {
                            /**
                             * @var \Symfony\Component\Form\Form $child
                             */
                            if (!$child->isValid()) {
                                $errors[$child->getName()] = $this->getErrorMessages($child);
                            }
                        }
                    } else {
                        /**
                         * @var \Symfony\Component\Form\FormError $error
                         */
                        foreach ($form->getErrors() as $key => $error) {
                            $errors[] = $error->getMessage();
                        }
                    }
                    //$errores = array('1' => 'Existen errores en los datos');
                    return $this->render('Bundle:Environment:registro.html.twig',
                                         array('form' => $form->createView(),
                                               'errores' => $errors));
                }

形式:

->add('fecNacimiento','date', array('widget' => 'single_text',
                                                'format' => 'dd/MM/yyyy',
                                                'invalid_message' => 'Debe introducir una fecha válida',
                                                'label' => 'Fecha nacimiento: '))

当用户输入无效日期时,我没有收到任何错误消息,例如121/05/2000(dd / mm / yyyy格式),但$ for-> isValid()返回false。但是当用户输入77/05/2000时,它的工作错误,在数据库中插入日期为77天到01/05/2000。

我哪里错了?

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以尝试解决此问题,添加“输入”' options数组的选项:

->add('fecNacimiento','date', 
            array('widget' => 'single_text',
                  'format' => 'dd/MM/yyyy',
                  'invalid_message' => 'Debe introducir una fecha válida',
                  'label'  => 'Fecha nacimiento: ',
                  'input'  => 'datetime' ))