Рейтинг:0

Как установить класс определения элемента для поля конфигурации?

флаг us

Я не могу установить класс определения элемента для поля конфигурации.

Я пытался реализовать hook_entity_bundle_field_info_alter() , но это не работает.

function hook_entity_bundle_field_info_alter(&$fields, \Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle) {
  если ($entity_type->id() === 'my_entity_type_id') {
    foreach ($fields как $field) {
      если ($field->getType() === 'файл') {
        $field->getItemDefinition()->setClass(AnswerFileItem::class);
      }
    }
  }
}

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

Мой класс элемента файла:

используйте Drupal\file\Plugin\Field\FieldType\FileItem;

класс AnswerFileItem расширяет FileItem {

  /**
   * {@inheritDoc}
   */
  общедоступная функция getUploadLocation ($ data = []) {
    $data += ['my_entity_type_id' => $this->getEntity()];
    вернуть parent::getUploadLocation($data);
  }

}

В основном я хочу добавить дополнительные данные токена во все поля конфигурации для данного entity_type_id.

Класс сущности не важен, это может быть узел.

думаю проблема в ПолеЭлементСписок потому что он использует неправильный класс элемента поля.

Hermann Schwarz avatar
флаг cn
Не могли бы вы предоставить исходный код, который вы действительно используете. Вы можете отлаживать и выяснять, где происходит поток управления, а где нет. Особенно: есть ли поле в Entity my_entity_type_d? Является ли AnswerFileItem видимым/импортированным?

Ответить или комментировать

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