Рейтинг:1

Как изменить маршруты, определенные в route_callbacks?

флаг in

Обычно я изменяю статические маршруты в подписчике маршрутов:

  защищенная функция alterRoutes(RouteCollection $ collection) {
    $ route = $ collection-> get ('gutenberg.media.load_media');
    если ($маршрут) {
      $route->setDefault('_controller', '\Drupal\gutenberg_adv\Controller\MediaController::loadMedia');
    }
  }

Однако это не работает для маршрутов, определенных в route_callback, поэтому это не работает, например, для маршрута поиска:

$ route = $ collection-> get ('search.view_node_search');
если ($маршрут) {
  $route->setDefault('_controller',
      '\Drupal\wi_misc\Controller\SearchController::view');
}

Итак, как изменить контроллер маршрута поиска?

MacSim avatar
флаг um
Вы установили модуль `search` как зависимость от вашего собственного модуля?
Рейтинг:-1
флаг jp

Попробуйте изменить вес исполнения изменить маршруты функция. Вы можете переопределить getSubscribedEvents функция:

общедоступная статическая функция getSubscribedEvents(): массив
{
    возвращаться [
        RoutingEvents::ALTER => [
            'ональтерроутес', 1
        ],
    ];
}

Обратите внимание, что я звоню onAlterRoutes вместо изменить маршруты. Это потому, что в родительском классе это оболочка для вызываемой функции:

общедоступная статическая функция getSubscribedEvents() {
    $events[RoutingEvents::ALTER] = 'onAlterRoutes';
    вернуть $события;
}

Чем выше ваше число (= вес), тем раньше оно будет выполнено (или наоборот). Я бы попробовал с некоторыми высокими и низкими числами и проверил результат.

Я никогда не пробовал это с этим конкретным событием, но я использовал этот метод для решения других проблем с событиями в некоторых МаршрутПодписчик.

Если вы используете drush для очистки кеша (что вы должны сделать после изменения кода в МаршрутПодписчик), то вы также можете использовать var_dump($маршрут); чтобы убедиться, что ваш маршрут существует и загружен правильно. Дамп будет отображаться в cmd.

Sergey Kravchenko avatar
флаг in
к сожалению это никак не влияет маршрут точно есть, я проверил но Drupal по-прежнему использует контроллер по умолчанию

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

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