Рейтинг:1

Как программно загрузить представление?

флаг om

Я создал представление, которое хочу получить из модуля. На drupal.org последняя рекомендация кажется

$entity = \Drupal::entityTypeManager()->getStorage($entity_type)->загрузить(1)

Итак, это мой код.

/** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
$view = \Drupal::entityTypeManager()
  ->getStorage('просмотр')
  -> загрузить ($ view_id);
$view->getDisplay('latest_blog');

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

Я на правильном пути и просто упускаю одну маленькую деталь? Загрузить термин таксономии или узел очень просто.Но эта штука с представлением ставит меня в тупик, и я не могу найти ничего, кроме старого способа сделать это в Drupal 7.

Les Lim avatar
флаг us
Получение вывода объекта, вероятно, является рендерингом объекта. Как правило, *загрузка* используется только для обозначения *извлечения объекта из его хранилища*.
sea26.2 avatar
флаг om
@LesLim Я не согласен ... Поиск этого (что я, кстати, и сделал) покажет, как «визуализировать» представление. Это не то, чего я хочу. Ответ с использованием того же контекста дает результаты, которые я ожидал бы от узла. Похоже, то же самое должно относиться и к представлению.
Les Lim avatar
флаг us
Тогда я полагаю, что не уверен, что вы ожидаете увидеть на загруженном объекте, чего вы не видите.
Рейтинг:3
флаг cn

Вероятно, вы хотите загрузить ViewExecutable:

класс ViewExecutable

Представляет представление в целом.

Объект, содержащий все данные для создания представления, а также функции-члены для создания запроса представления, выполнения запроса и рендеринга выход.

$executable = $view->getExecutable();
Рейтинг:2
флаг om

Спасибо @4x4. Я копался вокруг ядра и также нашел это. Мой рабочий код, который создает результирующий узел из запроса, таков.

  $view = \Drupal::entityTypeManager()
    ->getStorage('просмотр')
    ->загрузить($view_id)
    ->получить исполняемый();

  // Получить NID из результата View.
  $view->initDisplay();
  $view->setDisplay('latest_blog');
  $просмотреть->выполнить();
  $результат = $представление->результат;

С помощью NID мы можем легко получить путь, что мне и было нужно.

No Sssweat avatar
флаг ua
Если вы просто хотели получить результат, небольшой ярлык [views_get_view_result](https://api.drupal.org/api/drupal/core%21modules%21views%21views.module/function/views_get_view_result/9.3.x)

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

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