web-dev-qa-db-fra.com

Comment utiliser le crochet préenregistré pour enregistrer une valeur de champ comme titre de nœud?

J'ai un champ de date personnalisé dans un type de nœud "jour". Lorsque le nœud est enregistré (ou édité puis enregistré), je voudrais obtenir la valeur field_date (pas la date de publication) et l'enregistrer dans le champ de titre.

Je voudrais savoir comment, peut-être en utilisant un module pour:

hook_presave

  • OBTENEZ UNE VALEUR SUR LE TERRAIN

  • RÉGLER LE TITRE COMME VALEUR DE TERRAIN

  • ENREGISTRER LE NOEUD

8
Kevin howbrook

Vous devez implémenter hook_entity_presave ()

/**
 * Implements hook_entity_presave().
 */
function YOUR_MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
  switch ($entity->bundle()) {
    // Here you modify only your day content type
    case 'day':
      // Setting the title with the value of field_date.
      $entity->setTitle($entity->get('field_date')->value);
     break;
  }
}
16
Adrian Cid Almaguer

Pour l'entité de type utilisateur

/**
 * Implements hook_entity_presave().
 */
function YOUR_MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
  $entity->field_uhid->value = 'testing';     //set value for field
}
3
nehapandya

Pour l'entité de type profil, j'ai utilisé le code ci-dessous

/**
 * Implements hook_entity_presave().
 */
function YOUR_MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
  if ($entity->getEntityType()->id() == 'profile') {
    $zipcode = $entity->field_Zip_code->value;
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$zipcode."&sensor=false";
    $details=file_get_contents($url);
    $result = json_decode($details,true);
    $lat=$result['results'][0]['geometry']['location']['lat'];
    $lng=$result['results'][0]['geometry']['location']['lng'];
    $entity->field_geolocation->lat = $lat;
    $entity->field_geolocation->lng = $lng;
 }
}
3
nehapandya

Cela a fonctionné pour moi pour obtenir et définir la valeur du champ de date à l'aide du crochet de préenregistrement basé sur le type de contenu/** * Implémente hook_entity_presave (). * /

function YOUR_MODULE_global_entity_presave (Drupal\Core\Entity\EntityInterface $ entity) {if ($ entity-> bundle () == 'blog') {$ published = $ entity-> get ('created') -> value; $ entity-> set ('field_published_date', date ('Y-m-d\TH: i: s', $ published)); }}

0
santhosh