Встановлення поля дати за допомогою правомочності_metadata_wrapper


8

Я намагаюся встановити поле dateтипу за допомогою використання, entity_metadata_wrapperале хоча це поле створюється як дата в 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 . У API Entity немає зворотного виклику програми для полів дати, тому ви не можете встановити значення дати, використовуючи ent_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',
);

Це найбільш корисно для показу, як встановити дати без дати закінчення.
Рідберт

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
Ви не маєте на увазі valueі value2?
artfulrobot
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.