Zasadniczo chcę połączyć imię i nazwisko w $ node-> field_par_cont__nazwa
Ale daje mi ostrzeżenie. (Patrz poniżej)
funkcja Partnership_node_presave ($ node) { if ($ node-> type == 'partnerstwo') { $ first_name = $ node-> field_par_contact_first_name ['und'] [0] ['name']; $ nazwisko = $ node-> field_par_contact_sename ['und'] [0] ['name']; // https://drupal.org/project/field_hidden // Ukryta zmienna $ node-> field_par_contact_name ['und'] [0] ['value'] = $ first_name. ''. nazwisko; // Ostrzeżenie po save: array_flip (): Może odwracać tylko wartości STRING i INTEGER! w DrupalDefaultEntityController-> load () (wiersz 173 ... / drupal-7.23 / obejmuje / entity.inc } }
Zaktualizowany , zobacz obraz:
Odpowiedzi:
Na początek prawdopodobnie używasz niewłaściwego klucza tablicy dla zapisanej wartości pola; „nazwa” powinna tam być „wartością”.
Po drugie, tak naprawdę używasz pól Taksonomia Term w polach „imię” i „nazwisko”. Ważną kwestią dotyczącą pól Odniesienia jest to, że nie zawsze można założyć, że obiekty, do których istnieją odniesienia, zostały w pełni załadowane i są dostępne w obiekcie. Domyślnie po załadowaniu obiektu węzła to pole wygląda tylko tak:
Na pewno jest tylko klucz „Tid”. „nazwa” jest właściwością przywoływanego terminu i zwykle nie jest automatycznie dostępna. (Kolejny kod może w rzeczywistości załadować odwołanie do terminu i udostępnić go w obiekcie $ node, ale tak się dzieje, jeśli tak.)
Byłbyś o wiele łatwiejszy, gdyby twoje pola „Imię” i „Nazwisko” były polami tekstowymi zamiast odniesień. Wówczas wartości te należałyby bezpośrednio do samego węzła, a nie do odrębnego terminu taksonomii.
Jeśli jednak utknąłeś przy użyciu odwołań do terminów taksonomicznych, powinieneś zrobić punkt w kodzie, aby załadować odwołanie do terminu, a następnie uzyskać potrzebne wartości z samej właściwości $ term-> name.
źródło