Программно получить и установить значения полей - PullRequest
3 голосов
/ 27 марта 2011

У меня есть два поля, которые я хочу заполнить одинаковыми значениями;пользователи должны заполнить только один.
У меня также есть функция, которая проверяет, является ли второе поле пустым.Есть ли какие-либо изменения в способах получения и установки значений полей в Drupal 6 и Drupal 7?

РЕДАКТИРОВАТЬ: Я пытаюсь редактировать модуль прямо сейчас.
Да, я говорю о полях узла.
В массиве $ node есть только ID терминов, которые я добавил в узел.Как я могу получить название термина, зная его идентификатор?

Ответы [ 2 ]

7 голосов
/ 28 марта 2011

Поскольку вы пометили этот вопрос cck, я предполагаю, что вы работаете с полями узлов.

Чтобы скопировать значение одного поля ( x ) в другое ( y ), вы можете либо установить модуль Computed Field и настроить его так, чтобы значение y вычислялось из значения x или вы можете создать собственный модуль с чем-то похожим на следующие хуки:

Этот хук копирует все данные из поля x в поле y :

function mymodule_node_presave($node) {
    $node->field_y = $node->field_x;
}

Этот хук копирует только значение первого экземпляра поля x в поле y :

function mymodule_node_presave($node) {
    $node->field_y[$node->language][0]['value'] = $node->field_x[$node->language][0]['value'];
}

Возможно, вы захотитесделайте print_r для $node->field_x и $node->field_y, так как структура ваших данных может отличаться в зависимости от типа поля, которое вы используете.Если вы хотите проверить, являются ли какие-либо поля пустыми, вы можете заключить оператор присваивания в условие, которое вызывает вашу пользовательскую функцию.

2 голосов
/ 20 февраля 2013

Один хороший способ узнать значение поля - использовать field_get_items () , предоставляемый API поля.

field_get_items($entity_type, $entity, $field_name, $langcode = NULL);

Где:

$ entity_type: Это что-то вроде 'узла' или 'пользователя',

$ entity: является ли сущность, для которой требуется его значение поля,

$ field_name: имя машины поля,

$ langcode: язык, на котором хранится объект. Он является необязательным, и если он не указан, field_get_items найдет его автоматически.

...