Рейтинг:0

Свойства типа настраиваемого поля, заполненные извлеченными данными

флаг kr

У меня есть настраиваемый тип поля, org_person, с настроенным автозаполнением для поиска нашей конечной точки «люди». Он сохраняет что-то вроде Джон Смит (12345) к свойству значения ($свойства['значение']).

Конечная точка выглядит примерно так:

[{id, имя, название, ...}, {id, имя, название, ...},...]

Моя цель состоит в том, чтобы при сохранении объекта (и cron) запросить мою конечную точку и сохранить более 30 свойств в базе данных.

Мне нужно иметь возможность фильтровать и сортировать эти значения в представлениях, поэтому вычисление этих данных в режиме реального времени исключено.

Насколько я понимаю, мне нужно установить класс свойства, который будет использоваться для генерации значения свойства. Что-то вроде:

    $properties['имя'] = DataDefinition::create('любой')
      ->setLabel(новый TranslatableMarkup('Имя'))
      ->setComputed(ИСТИНА)
      -> установить только для чтения (ИСТИНА)
      ->setClass('\Drupal\my_module\TypedDataName');

Тогда в моем TypedDataName Класс, я получаю значение вроде:

  публичная функция getValue() {
    если ($this->обработано !== NULL) {
      вернуть $this->processed;
    }

    $values ​​= $this->getParent()->getValue();
    $submitted_value = $values['value'];

    $id = EntityAutocomplete::extractEntityIdFromAutocompleteInput($submitted_value);

    // Запускаем fetch здесь, чтобы получить свойство 'name'
    $response = $this->_fetchName($id);
    $значение = $ответ[0]["имя"];

    $это->обработано = $значение;

    вернуть $this->processed;
  }

Это работает, хотя кажется, что он работает на дисплее, а не извлекается из базы данных.

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

Как это можно сделать с помощью одной выборки, чтобы заполнить более 30 свойств при сохранении?

флаг in
Вы смотрели модуль Feeds?

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

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