Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony表单日期类型验证_Symfony_Symfony Forms - Fatal编程技术网

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