Fondamentalement, je veux mettre le prénom et le nom de famille ensemble dans $ node-> field_par_contact_name
Mais cela me donne un avertissement. (Voir ci-dessous)
function partnership_node_presave ($ node) { if ($ node-> type == 'partenariat') { $ first_name = $ node-> field_par_contact_first_name ['und'] [0] ['name']; $ patronyme = $ node-> field_par_contact_surname ['und'] [0] ['name']; // https://drupal.org/project/field_hidden // Variable cachée $ node-> field_par_contact_name ['und'] [0] ['value'] = $ first_name. ''. $ nom de famille; // Avertissement après sauvegarde: array_flip (): ne peut inverser que les valeurs STRING et INTEGER! dans DrupalDefaultEntityController-> load () (ligne 173 de ... / drupal-7.23 / includes / entity.inc } }
Mis à jour , veuillez voir l'image:
Réponses:
Pour commencer, vous utilisez probablement la mauvaise clé de tableau pour la valeur de champ que vous enregistrez; «nom» devrait y être «valeur».
Deuxièmement, vous utilisez en fait des champs de référence de terme de taxonomie pour vos champs "prénom" et "nom". Un point important à propos des champs de référence est que vous ne pouvez pas toujours supposer que les entités référencées ont été entièrement chargées et sont disponibles dans votre objet. Par défaut, lorsque l'objet nœud est chargé, ce champ ne ressemble qu'à ceci:
Seule la touche «tid» est définitivement là. 'nom' est une propriété du terme référencé et n'est généralement pas automatiquement disponible. (Le code suivant peut en fait charger le terme référencé et le rendre disponible dans l'objet $ node, mais c'est juste le cas si c'est le cas.)
Vous auriez beaucoup plus de facilité si vos champs "Prénom" et "Nom" étaient des champs de texte au lieu de références. Ensuite, ces valeurs appartiendraient directement au nœud lui-même, plutôt qu'à un terme de taxonomie distinct référencé.
Si vous êtes bloqué en utilisant des références de termes de taxonomie, alors vous devriez faire un point dans votre code pour charger le terme référencé, puis obtenir les valeurs dont vous avez besoin à partir de la propriété $ term-> name elle-même.
la source