Définition d'un champ de date via droits_metadata_wrapper


8

J'essaie de définir un champ de datetype via l'utilisation de entity_metadata_wrappermais le bien que le champ soit créé en tant que datetime dans mysql, et la création d'un nœud le définit au format YYY-MM-DD HH: MM: SS attendu, lors de son utilisation entity_metadata_wrapperéchoue. La seule chose que j'ai réussi à insérer est les horodatages, j'ai essayé le format de date Iso et le format standard.

Voici la ligne que j'essaie d'utiliser pour mettre à jour:

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

Merci!

Réponses:


5

Je sais que cette question a été posée il y a quelque temps, mais pour ceux qui rencontrent cette question, la réponse semble être donnée à http://drupal.org/node/1803286 . Il n'y a pas de rappel de définition pour les champs de date dans l'API d'entité, vous ne pouvez donc pas définir de valeurs de date à l'aide de entity_metadata_wrapper. Le nœud do référencé dans cette réponse donne une solution de contournement.


Belle prise! -> Signet pour la prochaine fois je dois jouer avec les champs de date. Merci mon ami.
stefgosselin

8

J'ai pu faire fonctionner cela de manière détournée. J'ai peut-être été en mesure d'accomplir la même chose avec time(), mais cela a mieux lu pour moi car je pouvais suivre exactement ce que je faisais si je revenais au code à l'avenir.

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

Si le champ ne collecte pas de date de fin, définissez-le avec l'horodatage:

$entity_wrapper->field_date = 1431670535;

Si c'est le cas:

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

Ceci est très utile pour montrer comment définir des dates sans date de fin.
reedbert

3

Les exemples affichés n'ont pas fonctionné pour moi. J'avais une configuration de champ de date sur l'entité utilisateur, avec seulement une date de début et pas d'heure. Le widget ne devrait pas avoir d'importance, mais utilisait simplement le champ de texte par défaut.

Enfin, il a fonctionné en utilisant l'encapsuleur de métadonnées d'entité et n'a eu besoin que d'utiliser -> set (time ()). Le code ci-dessous montre la définition d'un champ "booléen", d'un champ de référence produit et du champ date.

$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

Il semble que la façon dont la valeur est définie dépend du type de champ de date dont il s'agit. Cela a fonctionné pour moi lors de l'utilisation d'un Datetype de champ, qui avait une date de début et de fin.

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

En utilisant un exemple différent, cela a fonctionné pour moi avec un Datechamp, une valeur illimitée, l'heure de début uniquement:

$invitation->field_dates = array(1431670535);

1
Tu ne veux pas dire valueet value2?
artfulrobot
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.