【问题标题】:Symfony2.4 Date Validation not workingSymfony2.4 日期验证不起作用
【发布时间】:2014-06-15 18:55:53
【问题描述】:

我需要完成一些验证,例如,在日期字段中。我已经配置了 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。

我哪里错了?

提前致谢

【问题讨论】:

  • 您的问题解决了吗?在这种情况下,请分享您的解决方案。
  • 我刚刚测试了这个解决方案,但仍然无法正常工作...

标签: validation date symfony


【解决方案1】:

您可以尝试在选项数组中添加“输入”选项来解决此问题:

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

【讨论】:

  • 使用 'input' => 'datetime' 不起作用。仍在接受像 65/04/2003 这样的日期...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 2020-10-02
相关资源
最近更新 更多