У меня есть объект узла, и я пытаюсь использовать его для получения заданного пути в Drupal 8.
Был drupal_lookup_path()
в Drupal 7, но я не вижу никакого эквивалента или документации для Drupal 8.
Каков новый "Drupal" способ получить путь от объекта узла?
Было бы что-то простое, как $node->get('path')
?
Это кажется простым вопросом, но я просто не нахожу никакой документации по этому вопросу.
Заметьте, я не хочу псевдоним пути для текущего пути; Мне нужен псевдоним пути для произвольного узла, учитывая объект узла или идентификатор узла.
8
nodes
path-aliases
Джек Райан
источник
источник
Ответы:
Чтобы получить путь для идентификатора узла, используйте AliasManager :: getAliasByPath :
источник
Как насчет использования URL :
источник
Url
объект непосредственно как$node->toUrl()
.Если у вас есть только nid, решение 4k4 о
Работает отлично. Но если у вас уже есть объект узла, вы можете пропустить шаг или два. Узлы на самом деле имеют встроенные методы для получения URL.
Вернет псевдоним URL узла.
toUrl () возвращает объект URL. Смотрите здесь https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Url.php/class/Url/8.2.x
и toString () - это метод объекта url, который возвращает строковое представление URL.
источник
$node->toUrl()->setAbsolute()->toString()
будет возвращен абсолютный URL, полезный для обмена и т. Д.Вы также можете использовать метод load
path.alias_storage
для возврата массива сведений о псевдониме или логического false, если для этого узла не найден путь.$aliasArray = \Drupal::service('path.alias_storage')->load(['source' => '/node/' . $nid]);
источник
Лучший способ получить URL-адрес узла от объекта-узла
Он также будет обрабатывать язык узлов.
источник
Если вы хотите получить URL псевдонима узла по языкам, не забудьте использовать такой язык, как этот.
Если вы используете его в классе, не забудьте правильно использовать внедрение зависимостей.
источник
Я надеялся на более «друпальское» решение, но вот что я заставил себя сделать эту работу:
источник