По сути, я хочу объединить имя и фамилию в $ node-> field_par_contact_name
Но это дает мне предупреждение. (См. ниже)
function partnership_node_presave ($ node) { if ($ node-> type == 'partnership') { $ first_name = $ node-> field_par_contact_first_name ['und'] [0] ['name']; $ surname = $ node-> field_par_contact_surname ['und'] [0] ['name']; // https://drupal.org/project/field_hidden // Скрытая переменная $ node-> field_par_contact_name ['und'] [0] ['value'] = $ first_name. ''. $ Фамилия; // Предупреждение после сохранения: array_flip (): Может переворачивать только значения STRING и INTEGER! в DrupalDefaultEntityController-> load () (строка 173 из ... / drupal-7.23 / includes / entity.inc } }
Обновлено , пожалуйста, смотрите изображение:
Ответы:
Для начала вы, вероятно, используете неправильный ключ массива для значения поля, которое вы сохраняете; «имя» должно быть «значение» там.
Во-вторых, вы на самом деле используете поля справочника таксономических терминов для своих полей «имя» и «фамилия». Важным моментом в отношении полей ссылки является то, что вы не всегда можете предположить, что ссылочные объекты полностью загружены и доступны в вашем объекте. По умолчанию, когда загружается объект узла, это поле выглядит только так:
Определенно есть только клавиша «Tid». 'name' является свойством указанного термина и обычно не доступно автоматически. (Последующий код может фактически загрузить указанный термин и сделать его доступным в объекте $ node, но это просто случайность, если так.)
Это было бы намного проще, если бы поля «Имя» и «Фамилия» были текстовыми, а не ссылками. Тогда эти значения будут принадлежать непосредственно самому узлу, а не отдельному термину таксономии, на который делается ссылка.
Однако, если вы застряли, используя ссылки на термины таксономии, вы должны указать в своем коде точку для загрузки ссылочного термина, а затем получить нужные значения из самого свойства $ term-> name.
источник