Динамическое добавление словарного запаса

Я новичок в Drupal и работаю с Drupal 8, я не работал с Drupal 7 или 6, поэтому мало о нем знаю.

Я работаю над некоторыми динамическими полями типа контента Drupal.

У меня есть один тип контента, прикрепленный к словарю (выберите список терминов). Я использую улучшенный множественный выбор (https://www.drupal.org/project/improved_multi_select ) там.

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

Я хочу, чтобы всякий раз, когда мой код создавал словарь, он автоматически прикреплялся к информации о хранении полей, которую я использую в первом типе контента.


person Kiran B    schedule 03.12.2017    source источник


Ответы (1)


Для этого вам нужно добавить целевой пакет в настройки хранилища, приведенный ниже код поможет вам.

/**
   * Attach vocabulary to field
   * @var $field_storage
   */
  $field_storage = \Drupal::entityManager()->getStorage('field_config')->loadByProperties(['field_name' => 'field_machine_key']);
  $field_storage = $field_storage['node.content_type_machine_key.field_machine_key'];
  $settings = $field_storage->getSetting('handler_settings');
  // $vocab_id will be your newly created vocabulary
  $settings['target_bundles'][$vocab_id] = $vocab_id;
  $field_storage->setSetting('handler_settings',$settings);
  $field_storage->save(); 

Полный код см. здесь

person Udit Rawat    schedule 03.12.2017
comment
У меня работает, но я также добавляю термин по умолчанию в словарь, чтобы показать его в улучшенном множественном выборе. - person Kiran B; 10.12.2017