2015-11-25 147 views
1

我陷进错误时尝试生成在Symfony2的CRUD我总是得到以下异常:Symfony2的日期时间TransformationFailed异常

"Unable to transform value for property path "xxx": Expected a \DateTime or \DateTimeInterface." 

它总是与任何日期时间字段发生在这里是我的实体领域的摘录:

/** 
* @var \DateTime 
* 
* @ORM\Column(name="date_added", type="datetime", nullable=false) 
*/ 
private $dateAdded = '0000-00-00 00:00:00'; 


/** 
* Set dateAdded 
* 
* @param \DateTime $dateAdded 
* 
* @return User 
*/ 
public function setDateAdded() 
{ 
    $this->dateAdded = new \DateTime(); 

    return $this; 
} 

/** 
* Get dateAdded 
* 
* @return \DateTime 
*/ 
public function getDateAdded() 
{ 
    return $this->dateAdded; 
} 

- 也我试图用easyadmin bundle其产生使用上飞Symfony2的CRUD实体后端也得到了同样的错误,从而是有什么错我的实体?

回答

0

$dateAdded字段不能包含字符串。它需要有一个DateTime对象,因为这是预期的。换句话说,你需要有一个构造函数,设置日期:

/** 
* @var \DateTime 
* 
* @ORM\Column(name="date_added", type="datetime", nullable=false) 
*/ 
private $dateAdded; 

public function __construct() { 
    $this->dateAdded = new \DateTime(); 
} 

此外,您还需要接受一个参数上您setDate方法:

public function setDate($date) { 
    $this->dateAdded = $date; 
} 

作为一个方面说明,记住你将需要使用date过滤器,如果你会在一个树枝模板显示日期:

{{ entity.dateAdded|date('d.m.Y') }} 
0

也许去掉注释@param \DateTime $dateAdded因为你的function setDateAdded()没有参数?