0

在实体中,日期时间已标定:

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

4

2 回答 2

2

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

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

 function setTaskDateStart(?\DateTime $taskDateStart) {
     $this->taskDateStart = $taskDateStart;
 }
于 2018-05-21T14:42:03.337 回答
2

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

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

变得

 function setTaskDateStart( $taskDateStart ) {
     $this->taskDateStart = $taskDateStart;
 }
于 2018-02-16T13:32:11.397 回答