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

时间:2018-02-16 11:45:20

标签: 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" => false,
    "format" => "dd-MM-yyyy"  ,
    "attr" => ["class" => "js-datepicker"], 
    "required" => false                                                    
]);

将null插入字段

时出现此错误
  

传递给...的参数1必须是DateTime的实例,给定为

2 个答案:

答案 0 :(得分:2)

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

require("myclass.php")

成为

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

答案 1 :(得分:0)

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

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

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