การตั้งค่าฟิลด์วันที่ผ่าน entitity_metadata_wrapper


8

ฉันกำลังพยายามตั้งค่าเขตข้อมูลdateชนิดผ่านการใช้งานentity_metadata_wrapperแต่ถึงแม้ว่าเขตข้อมูลถูกสร้างเป็น datetime ใน mysql และการสร้างโหนดตั้งค่าด้วยรูปแบบ YYY-MM-DD ที่คาดหวัง HH: MM: SS เมื่อใช้entity_metadata_wrapperล้มเหลว สิ่งเดียวที่ฉันมีการจัดการเพื่อแทรกคือการประทับเวลาฉันได้ลองทั้งรูปแบบวันที่ 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 โหนดที่อ้างถึงในคำตอบนี้ให้วิธีแก้ปัญหา


รับได้สวย! -> บุ๊คมาร์คครั้งต่อไปที่ฉันต้องเล่นกับฟิลด์วันที่ ขอบคุณเพื่อน.
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',
);

สิ่งนี้มีประโยชน์มากที่สุดสำหรับการแสดงวิธีกำหนดวันที่โดยไม่มีวันที่สิ้นสุด
reedbert

3

ตัวอย่างที่โพสต์ไม่ได้ผลสำหรับฉัน ฉันมีการตั้งค่าฟิลด์วันที่ในเอนทิตีผู้ใช้โดยมีเฉพาะวันที่เริ่มต้นและไม่มีเวลา วิดเจ็ตไม่ควรสำคัญ แต่เพิ่งใช้ฟิลด์ข้อความเริ่มต้น

ในที่สุดก็ทำให้มันทำงานโดยใช้ wrapper เมตาดาต้านิติบุคคลและเพียงต้องการที่จะใช้ -> 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
คุณไม่ได้หมายถึงvalueและvalue2?
artfulrobot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.