symfony 3.4类型错误:参数1传递给。。。必须是DateTime的实例,给定null,

symfony 3.4类型错误:参数1传递给。。。必须是DateTime的实例,给定null,,symfony,symfony-3.4,Symfony,Symfony 3.4,在实体中,日期时间被标记为: /** * @var \DateTime * @ORM\Column(name="task_date_start", type="datetime", nullable=true) */ private $taskDateStart; 在形式上 $builder->add('taskDateStart', DateType::class, [ "widget" => "single_text", "html5" => f

在实体中,日期时间被标记为:

 /**
 * @var \DateTime
 * @ORM\Column(name="task_date_start", type="datetime", nullable=true)
 */
 private $taskDateStart;
在形式上

$builder->add('taskDateStart', DateType::class, [
    "widget" => "single_text",
    "html5" => false,
    "format" => "dd-MM-yyyy"  ,
    "attr" => ["class" => "js-datepicker"], 
    "required" => false                                                    
]);
在字段中插入null时,我发现了此错误

参数1传递给。。。必须是DateTime的实例,给定null


通过修改setter(没有原型的新setter)解决了该问题:

变成

 function setTaskDateStart( $taskDateStart ) {
     $this->taskDateStart = $taskDateStart;
 }

通过修改setter(没有原型的新setter)解决了该问题:

变成

 function setTaskDateStart( $taskDateStart ) {
     $this->taskDateStart = $taskDateStart;
 }

更好的解决方案是允许设置null并让验证报告错误

/**
 * @var \DateTime
 * @ORM\Column(name="task_date_start", type="datetime", nullable=false)
 * @Assert\NotBlank()
 */
 private $taskDateStart;


更好的解决方案是允许设置null并让验证报告错误

/**
 * @var \DateTime
 * @ORM\Column(name="task_date_start", type="datetime", nullable=false)
 * @Assert\NotBlank()
 */
 private $taskDateStart;


什么是你的实体?你能编辑你的帖子并添加实体设置器吗?注意,你应该在编辑器中使用
{}
符号来正确格式化你的代码(我在这篇文章中做的;)。很可能你有方法
setTaskDateStart(\DateTime$taskDateStart)
不允许将
null
传递给它。什么是
,您的实体?您可以编辑您的帖子并添加实体设置器吗?注意,你应该在编辑器中使用
{}
符号来正确格式化你的代码(我是为这篇文章做的;)。很可能你有方法
setTaskDateStart(\DateTime$taskDateStart)
不允许将
null
传递给它。