我需要完成一些验证,例如,在日期字段中。我已经配置了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。
我哪里错了?
提前致谢
答案 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' ))