Як програмно оновити дозволені значення поля списку?


10

Я створив список вибору для облікового запису Profile2 в Drupal 7. У списку дозволених значень я додав деякі значення. Тепер я хотів би зробити програмне оновлення значень у цьому списку (додавання, видалення або оновлення). Я не хочу використовувати form_alter, оскільки я хочу, щоб ці оновлення були внесені до бази даних. Моя проблема полягає в тому, що я не можу виявити, де ці значення зберігаються в базі даних, або як витягнути ці значення з Profile2, оновити їх і потім зберегти.

Я дуже високо і низько поставився до цього конкретного питання і не можу знайти відповіді, як це зробити. Я сподіваюся, що хтось може мені допомогти.

Дякую.

Відповіді:


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

Помістіть це в mock_update_N, щоб запустити лише один раз.
Ахраф СЕРЕД

Також це не змінить старі дозволені значення, якщо поле вже використовується.
Achraf JEDAY

3

Ви краще використовувати allowed_values_functionзворотний дзвінок:

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

Див. Розділ Створення параметрів динамічних дозволених значень для поля сутності .


Більш повна відповідь була б корисною. Код, на який ви посилаєтесь, хороший і працює аналогічно прийнятій відповіді, але був створений для використання з модулем "Особливості".
Джоннатан Елмор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.