Authority_metadata_wrapper ile tarih alanı belirleme


8

dateKullanım yoluyla tür bir alan ayarlamaya çalışıyorum entity_metadata_wrapperama alan mysql datetime olarak oluşturulmuş olmasına rağmen ve bir düğüm oluştururken, kullanıldığında beklenen YYY-AA-GG SS: MM: SS biçimiyle ayarlar entity_metadata_wrapper. Eklemeyi başardığım tek şey zaman damgaları, hem Iso tarih biçimini hem de standart olanı denedim.

İşte güncellemek için kullanmaya çalışıyorum hattı:

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

Teşekkürler!

Yanıtlar:


5

Bu sorunun bir süre önce sorulduğunu biliyorum, ancak bu soruya rastlayanlar için cevap http://drupal.org/node/1803286 adresinde verilmiş gibi görünüyor . Varlık API'sında tarih alanları için ayarlayıcı geri arama yok, bu nedenle entity_metadata_wrapper kullanarak tarih değerleri ayarlayamazsınız. Bu yanıtta başvurulan do düğümü geçici bir çözüm sağlar.


Güzel yakalayış! -> Bir dahaki sefere yer imleriyle tarih alanları ile oynamak zorundayım. Teşekkürler arkadaşım.
stefgosselin

8

Bunu dolambaçlı bir şekilde çalıştırabildim. Ben de aynı şeyi başarabilirdim time(), ama bu benim için daha iyi okudum, çünkü gelecekte koda geri döndüğümde tam olarak ne yaptığımı takip edebilirdim.

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

Alan bitiş tarihi toplamıyorsa, zaman damgasıyla ayarlayın:

$entity_wrapper->field_date = 1431670535;

Eğer yaparsa:

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

Bu, bitiş tarihi olmayan tarihlerin nasıl ayarlanacağını göstermek için kullanışlıdır.
reedbert

3

Gönderilen örnekler benim için işe yaramadı. Kullanıcı varlığında yalnızca başlangıç ​​tarihi ve saati olmayan bir tarih alanı ayarlaması yaptım. Widget önemli olmamalı, yalnızca varsayılan metin alanını kullanıyordu.

Sonunda varlık meta veri sarmalayıcı kullanarak çalışmasını sağladı ve sadece -> set (time ()) kullanması gerekiyordu. Aşağıdaki kod, bir onay kutusu "boole" alanı, bir ürün referans alanı ve tarih alanı ayarlamayı gösterir.

$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

Değerin nasıl ayarlandığı, ne tür bir tarih alanı olduğuna bağlıdır. Bu Date, başlangıç ​​ve bitiş tarihi olan bir alan türü kullanırken benim için çalıştı .

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

Farklı bir örnek kullanarak, bu benim için bir Datealan, sınırsız değer, sadece başlangıç ​​zamanı ile çalıştı :

$invitation->field_dates = array(1431670535);

1
Şunu yapmayın valueve value2?
artfulrobot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.