Рейтинг:1

Представление с путем api/VERSION/foo/bar/%node — %node не преобразуется в объект Node.

флаг in

Я пытаюсь создать несколько представлений с отображением REST Export. У них есть пути, установленные после 'api/.../.../.../%node', где %node будет идентификатором, отправленным в запрос для повышения.Базовое представление имеет контекстный фильтр Content ID (исключено), а затем «имеет любой термин» из этого узла.

Однако в контекстном фильтре для «Идентификатор термина таксономии из URL» с «Загрузить термины со страницы узла»:

      if (($node = $this->routeMatch->getParameter('node')) && $node instanceof NodeInterface) {
        $сущность = $узел;
      }

Эта проверка завершается неудачно, и, таким образом, термины узлов не проверяются.

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

Вот что xdebug видит в ViewPageController для параметров маршрута и аргументов:

введите описание изображения здесь

7611 — это идентификатор узла, какая часть процесса должна или обычно будет преобразовывать его в объект узла?

Если я сделаю это в аргументе Views TID, конечно, тогда у меня есть Node:

    // Загрузить аргумент по умолчанию из узла.
    если (!пусто($this->options['узел'])) {
      // Просто проверяем, удалось ли обнаружить узел.
      if (($node = $this->routeMatch->getParameter('node')) && $node instanceof NodeInterface) {
        $сущность = $узел;
      }

      if (($node = $this->routeMatch->getParameter('node')) && !empty($node) && !($node instanceof NodeInterface)) {
        $entity = \Drupal::entityTypeManager()->getStorage('node')->load($node);
      }
    }

Изменить: возможно, связано: https://www.drupal.org/project/drupal/issues/2528166

4uk4 avatar
флаг cn
Вы можете попытаться создать стандартный маршрут объекта с повышением приведения, Views перерабатывает существующие маршруты, которые должны сохранить повышение.
Kevin avatar
флаг in
Как это сработает? Я создаю пустое определение маршрута, а затем повторно использую этот путь в представлениях?
4uk4 avatar
флаг cn
Да, я знаю, что это будет только обходной путь.В противном случае мы ничего не можем здесь сделать, вы уже нашли проблему, которую нужно исправить.
Kevin avatar
флаг in
Я вижу - я не знал, что вы можете сделать это.
sonfd avatar
флаг in
@ 4uk4 - это реальная функция? Это что-то, что может быть "исправлено" позже?
sonfd avatar
флаг in
Не могли бы вы изменить маршрут своего представления, чтобы сообщить ему, что нужно повысить параметр? https://drupal.stackexchange.com/questions/81362/how-do-i-alter-the-route-defined-by-another-module

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

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