【问题标题】:Symfony2 Datetime TransformationFailed ExceptionSymfony2 日期时间转换失败异常
【发布时间】:2015-11-25 23:12:45
【问题描述】:

尝试在 symfony2 中生成 CRUD 时遇到错误,我总是收到以下异常:

"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 从实体生成后端,但也得到相同的错误,所以我的实体有问题吗?

【问题讨论】:

    标签: php symfony crud


    【解决方案1】:

    也许删除注释@param \DateTime $dateAdded 因为您的function setDateAdded() 没有参数?

    【讨论】:

      【解决方案2】:

      $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') }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多