it-swarm.com.de

Verwendung von hook_node_presave zum Ändern des Feldwerts

Grundsätzlich möchte ich Vor- und Nachnamen in $ node-> field_par_contact_name zusammenfügen

Aber es warnt mich. (Siehe unten)

]. 0] ['name']; 
 $ Nachname = $ node-> field_par_contact_surname ['und'] [0] ['name']; 
 
 // https://drupal.org/project/field_hidden
 // Versteckte Variable 
 $ node-> field_par_contact_name ['und'] [0] ['value'] = $ first_name. ''. $ Nachname; 
 
 // Warnung nach dem Speichern: array_flip (): Kann nur STRING- und INTEGER-Werte umdrehen! in DrupalDefaultEntityController-> load () (Zeile 173 von .../drupal-7.23/include/entity.inc 
} 
} 

Aktualisiert, siehe Bild: enter image description here

9
kenpeter

Für den Anfang verwenden Sie wahrscheinlich den falschen Array-Schlüssel für den Feldwert, den Sie speichern. 'name' sollte dort 'value' sein.

$node->field_par_contact_name['und'][0]['value'];

Zweitens verwenden Sie tatsächlich Taxonomy Term Reference-Felder für Ihre Felder "Vorname" und "Nachname". Ein wichtiger Punkt bei Referenzfeldern ist, dass Sie nicht immer davon ausgehen können, dass die referenzierten Entitäten vollständig geladen wurden und in Ihrem Objekt verfügbar sind. Wenn das Knotenobjekt geladen wird, sieht dieses Feld standardmäßig nur so aus:

$node->field_par_contact_first_name (Array)
  'und' (Array)
    0 (Array)
      'tid' => 284

Nur der 'tid'-Schlüssel ist definitiv da. 'name' ist eine Eigenschaft des referenzierten Begriffs und normalerweise nicht automatisch verfügbar. (Nachfolgender Code lädt möglicherweise den referenzierten Begriff und stellt ihn im $ node-Objekt zur Verfügung. Dies ist jedoch nur zufällig der Fall.)

Es wäre viel einfacher, wenn Ihre Felder "Vorname" und "Nachname" Textfelder anstelle von Referenzen wären. Dann würden diese Werte direkt zum Knoten selbst und nicht zu a gehören separater Taxonomiebegriff, auf den verwiesen wird.

Wenn Sie jedoch keine Taxonomie-Termreferenzen mehr verwenden, sollten Sie in Ihrem Code einen Punkt setzen, um den referenzierten Term zu laden, und dann die benötigten Werte aus der Eigenschaft $ term-> name selbst abrufen.

6
Les Lim