Symfony 表单日期类型验证

Symfony form DateType validation

我有这个日期类型:

$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

查询失败,因为这不能为空。但我希望它 return 错误并且在日期为空时不让表单被验证!

根据要求,实体:

/**
 * @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"))

收件人:

$builder
->add('date', DateTimeType::class, array(
    'widget' => 'single_text',
    'format' => 'dd/MM/yyyy',
    "required"=>true,
    'label' => "jour.date"))

来自 symfony docs 所需的选项

This is superficial and independent from validation. At best, if you let Symfony guess your field type, then the value of this option will be guessed from your validation information.

当您调用表单有效时,它依赖于验证器服务和实体验证映射来验证您的实体。

你需要这个constraint来设置它是必需的