Symfony表单日期类型验证
我有这个日期类型:Symfony表单日期类型验证,symfony,symfony-forms,Symfony,Symfony Forms,我有这个日期类型: $builder ->add('date', DateType::class, array( 'widget' => 'single_text', 'format' => 'dd/MM/yyyy', "required"=>true, 'label' => "jour.date")) 当提交日期为空的表单时,没有任何问题。它成功地通过了 if ($form->isVa
$builder
->add('date', DateType::class, array(
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
"required"=>true,
'label' => "jour.date"))
当提交日期为空的表单时,没有任何问题。它成功地通过了
if ($form->isValid())
在控制器中,最终会弹出一个错误
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'date' cannot be null
查询失败,因为它不能为null。但我希望它返回错误,而不是让表单在日期为空时进行验证
根据要求,该实体:
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
谢谢。您必须更改:
$builder
->add('date', DateType::class, array(
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
"required"=>true,
'label' => "jour.date"))
致:
从中选择所需的选项
这是肤浅的,独立于验证。充其量,如果你
让Symfony猜测您的字段类型,然后将显示此选项的值
从您的验证信息中猜测
当您调用表单有效时,它依赖验证程序服务和实体验证映射来验证您的实体
您需要此设置为必需的您可以向我们显示您的实体代码吗?您确定它的传递是有效的,没有日期吗?我将您的代码复制到FormBuilder的一个新实例中,并执行submit[],然后执行isValid返回false。@Mickado您应该将此作为答案发布。不提交表单是一个很好的错误,我会发布它-总是很高兴得到我的代表:-但我想先检查它是否是正确的答案,因为即使你不提交,我认为isValid默认返回false。嘿,伙计们,谢谢。它的传递是有效的,是的,因为请求处于条件中。我正在实体代码中添加字段嘿,谢谢你的回答,但它不起作用。它仍然通过了验证,没有任何问题。虽然类型更准确,但我还是会保留它
$builder
->add('date', DateTimeType::class, array(
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
"required"=>true,
'label' => "jour.date"))