2016-05-26 8 views
0

私はインポーターを作成していますが、実際にオブジェクトを作成することに悩まされています。具体的には、DateTimeフィールドに問題があります。私はblogArticleというクラスを持っており、Pimcoreのデモデータがブログ記事のために使用するのと同じように使っています。Pimcore:オブジェクトのDateTimeクラスフィールドの設定

$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 

私は離れた値がこのフィールドタイプのためにデータベースに格納する方法から、ドキュメントに何かを見つけることができません。フィールド・タイプごとにクラス・フィールドに値を適切に割り当てる方法については、文字通りゼロのドキュメント。これを解決するためのイゴール・ベンコへ


SOLUTION

ありがとう!

$newPost_date = new DateTime("2016-07-01 12:10:37"); 
$newPost->setDate($newPost_date); 

答えて

2

システムがまだZend_Dateを使用しているようです。 DateTimeは、Pimcore 4のクリーンインストールがある場合にのみ使用されます。そうでない場合は、アップデート後にデフォルトで互換性レイヤーが有効になります。互換性レイヤーは代わりにZend_Dateを使用します。

あなたがDateTimeクラスを使用するために useZendDate に虚偽のフラグをオンにする必要があり、あなたのsystem.phpで

DateTimeクラスのインスタンスをセッターに渡す必要があります。このような何か: https://www.pimcore.org/wiki/display/PIMCORE4/Update+from+Version+3.x+to+Version+4#UpdatefromVersion3.xtoVersion4-PHP%27sDateTimereplacesZend_Date

EDIT:@GrafikMatthew更新彼の質問の後に答えを更新しました

$date=new DateTime("2016-07-01 12:10:37"); 
$newPost->setDate($date); 

これを参照してください。

+0

私はPimcore 4のクリーンインストールバージョンを使用しました。この設定をチェックして報告します。ありがとう。 – RedYetiCo

+0

整数を割り当てることは、このフィールド値を設定する正しい方法ではありませんか?フィールドの設定に正しい入力形式について説明しているドキュメントには、私が見ていないセクションがありますか? – RedYetiCo

+0

これを参照してください:https://www.pimcore.org/wiki/pages/viewpage.action?pageId=16854212 "データベースでは、そのデータはUNIXタイムスタンプとして保存され、INTデータ列に格納されます。 DateTimeオブジェクトによって表されます。それは本当に明らかではありません。しかし、あなたの最善の策は、setDateメソッドに何を渡すことができるかを調べることです。良いIDEならどれでもヒントを与えるべきです。 –

関連する問題