web-dev-qa-db-fra.com

Définition d'un champ de date via droitity_metadata_wrapper

J'essaie de définir un champ de type date en utilisant entity_metadata_wrapper mais 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 l'utilisation de entity_metadata_wrapper il é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!

8
stefgosselin

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 d.o référencé dans cette réponse donne une solution de contournement.

5
jacobson

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 lisait mieux 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());
8
anniegreens

Si le champ ne collecte pas la 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',
);
5
ya.teck

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();
3
Blaine Lang

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 type de champ Date, 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 autre exemple, cela a fonctionné pour moi avec un champ Date, valeur illimitée, heure de début uniquement:

$invitation->field_dates = array(1431670535);
2
tyler.frankenstein