Как я могу получить текущий псевдоним и / или путь в Drupal 8?
В Drupal 7 я сделал это с drupal_get_path_alias()
. Какой эквивалентный код я должен использовать в Drupal 8?
источник
Как я могу получить текущий псевдоним и / или путь в Drupal 8?
В Drupal 7 я сделал это с drupal_get_path_alias()
. Какой эквивалентный код я должен использовать в Drupal 8?
Некоторые из других ответов были правильными только в предыдущих альфа / бета-версиях Drupal 8 или казались неполными. Начиная с бета7 (и, надеюсь, навсегда), должны применяться следующие правила:
Для текущего необработанного пути (необъявленный путь Drupal):
$current_path = \Drupal::service('path.current')->getPath()
Для текущего URI , который в значительной степени является прямым представлением запроса (он может даже включать строку запроса):
$current_uri = \Drupal::request()->getRequestUri();
Конечно, нет никакой гарантии, что это $current_uri
значение даст вам псевдоним, даже если он доступен для запроса, поскольку он представляет только то, что запросил пользователь. Поэтому, чтобы строго выполнить то, о чем вы просите (получить псевдоним, если он доступен, и путь, если нет), я думаю, вы могли бы сделать:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
Конечно, в зависимости от типа обработки, которую вы выполняете, лучше всего работать с маршрутами, а не с путями, но я полагаю, что это совсем другая тема.
::getAliasByPath()
которое больше не будет принимать строку пути без косой черты (начиная с бета13, я полагаю).getAliasByPath
возвращает путь без языкового префикса. Есть идеи, как это решить?Правильный способ для URL без псевдонима URL.
источник
\Drupal::request()->getRequestUri();
Drupal установку в подпапку?В Drupal 8 вы можете сделать это с помощью Twig:
пример:
от: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
источник
{{ url('<current>') }}
даже если он не указан в разделе «Шаблоны замены».Для получения текущего пути в Drupal 7 вы используете для использования
current_path()
, но в Drupal 8 вы используете$url = Url::fromRoute('<current>');
.Источник: https://www.drupal.org/node/2382211
источник
current_path()
иdrupal_get_path_alias()
они разные функции.Чтобы получить текущий путь (aliased path):
Чтобы получить текущий путь (системный путь):
источник
Для Drupal 8 это самое чистое решение, которое мне удалось найти:
источник
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
В шаблоне Twig / Drupal 8:
URL текущей страницы
только путь
См .: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates.
источник
Если вам нужен абсолютный URL с строкой запроса:
источник