我正在编写一个导入程序,并且实际上正在创建对象。具体来说,我遇到了DateTime字段的麻烦。我有一个名为blogArticle
的课程,我正在使用它们,就像Pimcore演示数据将它们用于博客文章一样。
$newPost = new Object\BlogArticle();
$newPost->setCreationDate( time() );
$newPost->setPublished( true );
$newPost->setText( $text ); // text input field
$newPost->setTitle( $title ); // text input field
$newPost->setDate( $date ); // datetime input field
$newPost->setKey( \Pimcore\File::getValidFilename( $key ) );
$newPost->setParentId( $id );
$newPost->save();
我得到的确切错误是:
Whoops\Exception\ErrorException thrown with message "Call to a member function getTimestamp() on a non-object"
Stacktrace:
#0 Whoops\Exception\ErrorException in /.../pimcore/models/Object/ClassDefinition/Data/Datetime.php:73
除了如何在数据库中为此字段类型存储值之外,我在文档中找不到任何内容。关于如何为每个字段类型的类字段适当地赋值的文档,只有零文档。
解
感谢Igor Benko解决这个问题!
$newPost_date = new DateTime( "2016-07-01 12:10:37" );
$newPost->setDate( $newPost_date );
答案 0 :(得分:2)
您的系统似乎仍设置为使用Zend_Date。只有在干净安装Pimcore 4时才使用DateTime,否则在更新后默认打开兼容层。兼容性层使用Zend_Date代替。
在你的system.php中,你必须将标志 useZendDate 改为 false 才能使用DateTime类。
您需要将DateTime类的实例传递给setter。像这样:
$date=new DateTime("2016-07-01 12:10:37");
$newPost->setDate($date);
编辑:在@GrafikMatthew更新了他的问题之后更新了答案。