Ustawianie pola daty za pomocą uprawnień_metadanych_wrapper


8

Próbuję ustawić pole datetypu poprzez użycie, entity_metadata_wrapperale chociaż pole jest tworzone jako datetime w mysql, a utworzenie węzła ustawia go na oczekiwany format RRRR-MM-DD GG: MM: SS, gdy jego użycie się entity_metadata_wrappernie powiedzie. Jedyne, co udało mi się wstawić, to znaczniki czasu. Próbowałem zarówno formatu daty ISO, jak i standardowego.

Oto wiersz, którego próbuję użyć do aktualizacji:

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

Dzięki!

Odpowiedzi:


5

Wiem, że to pytanie zostało zadane jakiś czas temu, ale dla tych, którzy napotkają to pytanie, odpowiedź wydaje się być podana na stronie http://drupal.org/node/1803286 . W interfejsie API encji nie ma wywołania zwrotnego ustawiacza dla pól daty, więc nie można ustawić wartości daty za pomocą podmiotu_metadanych_wrapper. Węzeł do, do którego odnosi się ta odpowiedź, umożliwia obejście tego problemu.


Dobry chwyt! -> Zaznaczone na następny raz, że muszę grać z polami daty. Dziękuję przyjacielu.
stefgosselin

8

Udało mi się sprawić, by działało to na rondzie. Mogłem być w stanie osiągnąć to samo time(), ale przeczytałem to lepiej, ponieważ mogłem śledzić dokładnie to, co robiłem, jeśli kiedykolwiek wrócę do kodu w przyszłości.

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

Jeśli pole nie zbiera daty zakończenia, ustaw go za pomocą znacznika czasu:

$entity_wrapper->field_date = 1431670535;

Jeśli to robi:

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

Jest to najbardziej przydatne do pokazania, jak ustawić daty bez daty końcowej.
reedbert

3

Opublikowane przykłady nie działały dla mnie. Miałem ustawienie pola daty na encji użytkownika, z tylko datą rozpoczęcia i bez godziny. Widżet nie powinien mieć znaczenia, ale używał domyślnego pola tekstowego.

Wreszcie udało się go uruchomić przy użyciu opakowania metadanych encji i wystarczyło użyć -> set (time ()). Poniższy kod pokazuje ustawienie pola wyboru „boolean”, pola odniesienia produktu i pola daty.

$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

Wygląda na to, że sposób ustawienia wartości zależy od typu pola daty. To działało dla mnie, gdy Dateużywałem typu pola, który miał datę początkową i końcową.

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

Na innym przykładzie działało to dla mnie z Datepolem, nieograniczoną wartością, tylko czasem rozpoczęcia:

$invitation->field_dates = array(1431670535);

1
Nie masz na myśli valuei value2?
artfulrobot
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.