Mengatur bidang tanggal melalui entitity_metadata_wrapper


8

Saya mencoba untuk menetapkan bidang datetipe melalui penggunaan entity_metadata_wrappertetapi meskipun bidang tersebut dibuat sebagai datetime di mysql, dan membuat simpul menetapkannya dengan yang diharapkan YYY-MM-DD HH: MM: format SS, ketika menggunakan entity_metadata_wrappergagal. Satu-satunya hal yang berhasil saya sisipkan adalah cap waktu, saya sudah mencoba format tanggal Iso dan yang standar.

Inilah baris yang saya coba gunakan untuk memperbarui:

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

Terima kasih!

Jawaban:


5

Saya tahu pertanyaan ini ditanyakan beberapa waktu lalu, tetapi bagi mereka yang menemukan pertanyaan ini, jawabannya tampaknya diberikan di http://drupal.org/node/1803286 . Tidak ada setback callback untuk bidang tanggal di API Entity, jadi Anda tidak bisa mengatur nilai tanggal menggunakan entitas_metadata_wrapper. Simpul do yang dirujuk dalam jawaban ini memberikan solusi.


Tangkapan bagus! -> Ditandai untuk waktu berikutnya saya harus bermain dengan bidang tanggal. Terima kasih teman.
stefgosselin

8

Saya bisa membuat ini bekerja secara tidak langsung. Saya mungkin dapat mencapai hal yang sama dengan time(), tetapi ini membaca lebih baik bagi saya karena saya bisa mengikuti dengan tepat apa yang saya lakukan jika saya pernah kembali ke kode di masa depan.

// 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

Jika bidang tidak mengumpulkan tanggal akhir, atur dengan stempel waktu:

$entity_wrapper->field_date = 1431670535;

Jika ya:

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

Ini paling berguna untuk menunjukkan cara mengatur tanggal tanpa tanggal akhir.
Reedbert

3

Contoh yang diposting tidak berfungsi untuk saya. Saya memiliki pengaturan bidang tanggal pada entitas pengguna, dengan hanya tanggal mulai dan tanpa waktu. Widget seharusnya tidak masalah, tetapi hanya menggunakan bidang teks default.

Akhirnya berhasil menggunakan pembungkus entitas metadata dan hanya perlu menggunakan -> set (waktu ()). Kode di bawah ini menunjukkan pengaturan kotak centang "boolean", bidang referensi produk dan bidang tanggal.

$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

Tampaknya bagaimana nilai diatur tergantung pada jenis bidang tanggal apa itu. Ini berfungsi untuk saya ketika menggunakan Datetipe bidang, yang memiliki tanggal mulai dan berakhir.

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

Menggunakan contoh berbeda, ini berfungsi untuk saya dengan Datebidang, nilai tidak terbatas, waktu mulai saja:

$invitation->field_dates = array(1431670535);

1
Bukankah maksud Anda valuedan value2?
artfulrobot
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.