Pimcore:在对象上设置DateTime类字段

时间:2016-05-26 13:10:37

标签: datetime field variable-assignment pimcore

我正在编写一个导入程序,并且实际上正在创建对象。具体来说,我遇到了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 );

1 个答案:

答案 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);

看到这个: https://www.pimcore.org/wiki/display/PIMCORE4/Update+from+Version+3.x+to+Version+4#UpdatefromVersion3.xtoVersion4-PHP%27sDateTimereplacesZend_Date

编辑:在@GrafikMatthew更新了他的问题之后更新了答案。