Единственный пример в ядре Drupal для динамического маршрута в зависимости от сохраненных пользователем данных — это View с отображением страницы, и это занимает очень много времени для сохранения. Представлениям нужны маршруты для контекстных фильтров. Если у вас нет такого конкретного варианта использования контента (пожалуйста, отредактируйте свой вопрос, если он у вас есть), правильным путем будут псевдонимы. В форме редактирования узла вы можете добавить только один псевдоним, но вы можете добавить больше в /admin/config/поиск/путь. Если вы хотите, чтобы в одном месте вы могли изменить форму редактирования узла для нескольких псевдонимов.
Если вы не хотите создавать каждый псевдоним вручную, а пути имеют шаблон, вы можете использовать обработчик путей. Вы можете создать леса с drush
процессор пути drush gen
и поместите шаблон регулярного выражения во входящий метод:
/modules/custom/mymodule/src/PathProcessor/PathProcessorMymodule.php
<?php
пространство имен Drupal\mymodule\PathProcessor;
используйте Drupal\Core\PathProcessor\InboundPathProcessorInterface;
используйте Symfony\Component\HttpFoundation\Request;
/**
* Процессор пути для удаления префикса.
*/
класс PathProcessorMymodule реализует InboundPathProcessorInterface {
/**
* {@inheritdoc}
*/
общедоступная функция processInbound ($ путь, запрос $ запрос) {
return preg_replace('#^/(автор|поддерживающий)/#', '/', $path);
}
}
Вы можете получить исходный путь позже с помощью
\Drupal::request()->getPathInfo()
или вы можете сохранить префикс в свойстве службы перед его удалением, чтобы сделать его глобально доступным.
Если ваши проверки производят визуализированный вывод, добавьте url.путь
контекст кеша.