Рейтинг:0

Как получить информацию об узле в RouteSubscriberBase::alterRoutes

флаг jp

чего я пытаюсь добиться, так это установить тему администратора для некоторых конкретных узлов. Я определил RouteSubscriberBase, но как я могу получить здесь информацию об узле? Этот код не работает $node = \Drupal::routeMatch()->getParameter('node');

$ маршрут-> получить путь () вернется /узел/{узел}

класс RouteSubscriber расширяет RouteSubscriberBase
{

    /**
     * {@inheritdoc}
     */
    общедоступная функция alterRoutes (RouteCollection $ collection)
    {
        если ($ route = $ collection-> get ('entity.node.canonical')) {
            $node = \Drupal::routeMatch()->getParameter('node');
            // дпм($узел); - это будет ноль
            если ($nid == 123) {
                $route->setOption('_node_operation_route', ИСТИНА);
            }
        }
    }

}

Обновлять: Как упоминалось ниже @4uk4, RouteSubscriberBase не является правильным решением для этого. Как было предложено ТемаNegotiatorИнтерфейс делает эту работу. Спасибо, @4uk4!

Vikram8888 avatar
флаг in
Как вы сказали, $route->getPath() вернет /node/{node}, используя функцию взрыва, вы можете получить идентификатор узла в формате массива или попробовать таким образом $entity = \Drupal::routeMatch()- >получитьпараметр('узел'); if ($entity instanceof \Drupal\node\NodeInterface) { // Проверяем, является ли это узлом $nid = $node->id(); // У вас также есть объект узла прямо здесь }
sonfd avatar
флаг in
Здесь вы никогда не сможете получить идентификатор узла — это событие сработает только при очистке кешей или включении модуля.
4uk4 avatar
флаг cn
Если вы хотите выбрать другую тему для определенных узлов, вам нужен настраиваемый переговорщик темы. См. https://drupal.stackexchange.com/questions/281447/themenegotiator-not-working-for-admin-pages.

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

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