Drupal 8 怎么获得节点的 URL?
发布于
正在开发一个自定义模块,需要获得节点的 URL 地址。节点地址可以通过 'node/' . $nid
构造,想知道有没有更推荐的办法。如果节点设置了别名又应该怎么获取?谢谢。
1 个回答
如果只有 $nid,可以使用以下代码:
// Drupal 8.
$alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$nid);
// Drupal 9,注意服务名有了小改变。
$alias = \Drupal::service('path_alias.manager')->getAliasByPath('/node/'.$nid);
// 使用 URL 类
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid])->toString();
如果已取得 $node 对象,可以使用以下代码:
// 获得相对路径。
$node->toUrl()->toString();
// 获得绝对路径。
$node->toUrl()->setAbsolute()->toString();