Получить текущий псевдоним пути или путь?

Как получить текущий псевдоним и /или путь в Drupal 8?

В Drupal 7 я сделал это с помощью drupal_get_path_alias () . Что такое эквивалентный код, который я должен использовать в Drupal 8?

35 голосов | спросил zhilevan 10 MarpmMon, 10 Mar 2014 12:01:54 +04002014-03-10T12:01:54+04:0012 2014, 12:01:54

7 ответов


75

Некоторые из других ответов были правильными только в предыдущих альфа /бета-версиях 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);

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

ответил rjacobs 2 MaramMon, 02 Mar 2015 04:31:06 +03002015-03-02T04:31:06+03:0004 2015, 04:31:06
34

Правильный путь для URL-адреса без псевдонима URL.

$ current_path = \ Drupal :: service ('path.current') -> getPath ()
ответил Daniel Wehner 10 MarpmMon, 10 Mar 2014 16:08:14 +04002014-03-10T16:08:14+04:0004 2014, 16:08:14
10

Для получения текущего пути в Drupal 7 вы используете current_path (), но в Drupal 8 вы используете $ url = Url :: fromRoute ('<current>' );.

Источник: https://www.drupal.org/node/2382211

ответил Nitesh Sethia 31 Maypm15 2015, 16:15:45
10

В Drupal 8 вы можете сделать это с помощью Twig:

{{url ('<current>')}}

Пример:

<a href = "{{url ('<current>')}}"> {{'Reload' | t}} </a>

from: https: //www.drupal .org /документы /8 /тематизация /веточка /функция-в-прут-шаблоны

ответил Nicola De Lazzari 24 MarpmFri, 24 Mar 2017 12:49:09 +03002017-03-24T12:49:09+03:0012 2017, 12:49:09
7

Чтобы получить текущий путь (путь с псевдонимом):

//Возвращает что-то вроде /about
$ url = \ Drupal \ Core \ Url :: fromRoute ('<current>');

Чтобы получить текущий путь (системный путь):

//Возвращает узел /1
$ path = $ url-> getInternalPath ();
ответил Rahul Baisane 5 42015vEurope/Moscow11bEurope/MoscowThu, 05 Nov 2015 16:40:03 +0300 2015, 16:40:03
4

Для Drupal 8 это самое чистое решение, которое я смог найти:

URL :: fromRoute ( '& л; ток >', массив (), массив ( 'абсолютная' = > 'истина'));
ответил crobicha 1 22016vEurope/Moscow11bEurope/MoscowTue, 01 Nov 2016 01:19:00 +0300 2016, 01:19:00
3

В Drupal 8 есть функция current_path (), которая возвращает текущий URL-адрес просматриваемой страницы.

Примеры:

http://example.com/node/306 возвращает "node /306".
http://example.com/drupalfolder/node/306 возвращает «node /306», а base_path () возвращает «/drupalfolder /».
http://example.com/path/alias (который является псевдонимом пути для узла /306) возвращает «node /306» в отличие от псевдонима пути.

см. здесь https: //api.drupal. орг /API /друпал /сердцевина% 21includes% 21common.inc /функция /базовый_путь /8.0.x

ответил Drupal Developer 10 MarpmMon, 10 Mar 2014 12:11:58 +04002014-03-10T12:11:58+04:0012 2014, 12:11:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132