Drupal → Добавить сторонней контент сущности своё базовое поле (base field)

23.11.2019

Пример добавления терминам базового поля depth_level:

// MODULENAME.module

/**
 * Implements hook_entity_base_field_info().
 */
function MODULENAME_entity_base_field_info(EntityTypeInterface $entity_type) {
  if ($entity_type->id() == 'taxonomy_term') {
    $fields = [];

    $fields['depth_level'] = BaseFieldDefinition::create('integer')
      ->setLabel(t('Depth'))
      ->setSetting('unsigned', TRUE)
      ->setDefaultValue(0);

    return $fields;
  }
}
// MODULENAME.install

/**
 * Add term depth base field.
 */
function MODULENAME_update_8001() {
  $depth_field = BaseFieldDefinition::create('integer')
    ->setLabel(t('Depth'))
    ->setSetting('unsigned', TRUE)
    ->setDefaultValue(0);

  \Drupal::entityDefinitionUpdateManager()->installFieldStorageDefinition('depth_level', 'taxonomy_term', 'MODULENAME', $depth_field);
}

После написания кода нужно будет запустить update.php.

Подробнее про \Drupal::entityDefinitionUpdateManager()

Написанное актуально для
Drupal 8
Похожие записи

Добавить комментарий