entitity_metadata_wrapperによる日付フィールドの設定


8

date使用を通じてタイプのフィールドを設定しようとしていますentity_metadata_wrapperが、フィールドはmysqlで日時として作成されますが、ノードを作成すると、使用entity_metadata_wrapperに失敗したときに、予想されるYYY-MM-DD HH:MM:SS形式で設定されます。挿入できたのはタイムスタンプだけです。ISO日付形式と標準形式の両方を試しました。

これは私が更新に使用しようとしている行です:

   // sets reminder date in db
   $wrapper->field_event_reminder_date->set($reminder_date->format("Y-m-d H:i:s"));

ありがとう!

回答:


5

私はこの質問が少し前に尋ねられたことを知っていますが、この質問に出くわした人にとって、答えはhttp://drupal.org/node/1803286で与えられるようです。Entity APIには日付フィールドのセッターコールバックがないため、entity_metadata_wrapperを使用して日付値を設定することはできません。この回答で参照されているdoノードは回避策を提供します。


ナイスキャッチ!->次回のためにブックマークしたので、日付フィールドを操作します。ありがとう、友達。
stefgosselin

8

私はこれを回り道で機能させることができました。私はで同じことを達成できたかもしれtime()ませんが、将来コードに戻った場合に自分がやっていたことを正確に追跡できるので、これは私にとってより読みやすくなっています。

// Update the Acceptance Date of Current Agreement.
$acceptance_date = new DateTime(date('Y-m-d 00:00:00'));
$company_wrapper->field_acceptance_date->set($acceptance_date->getTimestamp());

5

フィールドが終了日を収集しない場合は、タイムスタンプを設定します。

$entity_wrapper->field_date = 1431670535;

ある場合:

$entity_wrapper->field_date = array(
  'value' => '2015-05-12 11:30:38',
  'value2' => '2015-05-25 21:45:33',
);

これは、終了日のない日付を設定する方法を示すのに最も役立ちます。
リードベルト16

3

投稿された例は私にはうまくいきませんでした。ユーザーエンティティで日付フィールドを設定しました。開始日のみで、時間はありません。ウィジェットは重要ではありませんが、デフォルトのテキストフィールドを使用していました。

最後に、エンティティメタデータラッパーを使用して機能させ、-> set(time())を使用するだけで済みました。以下のコードは、チェックボックスの「ブール」フィールド、製品参照フィールド、および日付フィールドの設定を示しています。

$wrapper = entity_metadata_wrapper('user', $account);
$wrapper->field_subscription_active = 1;
$wrapper->field_subscriptionplan->set($line_item->commerce_product[LANGUAGE_NONE][0]['product_id']);
$wrapper->field_subscription_signup_date->set(time());
$wrapper->save();

2

値の設定方法は、日付フィールドのタイプによって異なるようです。これDateは、開始日と終了日が指定されているフィールドタイプを使用する場合に役立ちました。

$product->field_course_event_date->set(array(
  'value' => "2013-12-09 00:00:00",
  'value2' => "2013-12-10 00:00:00",
));

別の例を使用すると、これは、Dateフィールド、無制限の値、開始時間のみで私にとってはうまくいきました:

$invitation->field_dates = array(1431670535);

1
あなたは意味しないvaluevalue2
artfulrobot 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.