Как программно обновить допустимые значения поля списка?

10

Я создал список выбора для учетной записи Profile2 в Drupal 7. В список разрешенных значений я добавил некоторые значения. Теперь я хотел бы программно обновить значения в этом списке (добавить, удалить или обновить). Я не хочу использовать form_alter, так как я хочу, чтобы эти обновления были зафиксированы в базе данных. Моя проблема в том, что я не могу найти, где эти значения хранятся в базе данных или как извлечь эти значения из Profile2, обновить их, а затем сохранить их.

Я погуглил высоко и низко по этой конкретной проблеме и не могу найти ответ, как это сделать. Я надеюсь, что кто-то может мне помочь.

Спасибо.

user5013
источник

Ответы:

23

Что-то вроде ...

// Get the field info
$info = field_info_field('field_some_field');

// Get a reference to the values
$values = &$info['settings']['allowed_values'];

// Manipulate the values in some way, e.g.
$values['new_value'] = 'New Value';

// Save the field
field_update_field($info);
Клайв
источник
где мне нужно добавить этот кусок кода?
Шивам
@shivam Вам нужно добавить этот код в пользовательский модуль, который вы создаете.
user5013
Поместите это в hook_update_N для запуска только один раз.
Achraf JEDAY
Также это не изменит старые разрешенные значения, если поле уже используется.
Achraf JEDAY
3

Вы бы лучше использовать allowed_values_functionс обратным вызовом:

'settings' => array(
  'allowed_values' => array(),
  'allowed_values_function' => '_my_feature_module_options_list',
),

См. Создание параметров динамических допустимых значений для поля сущности .

вероятнейшее место
источник
Был бы полезен более полный ответ. Код, на который вы ссылаетесь, хорош и работает аналогично принятому ответу, но был создан для использования с модулем Возможности.
Джонатан Элмор