Symfony表单DateType验证

时间:2017-02-21 08:56:12

标签: symfony symfony-forms

我有这个DateType:

$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

查询失败,因为它不能为空。但我希望它能够返回错误,并且在日期为空时不要让表单得到验证!

根据要求,实体:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date", type="datetime")
 */
private $date;

非常感谢。

2 个答案:

答案 0 :(得分:1)

来自所需选项的symfony docs

  

这是肤浅的,独立于验证。充其量,如果你   让Symfony猜测你的字段类型,那么这个选项的值就会出现   从你的验证信息中猜到。

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

您需要constraint来设置所需

答案 1 :(得分:0)

你必须改变:

$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"))