Drupal 8 怎么获得节点的 URL?

正在开发一个自定义模块,需要获得节点的 URL 地址。节点地址可以通过 'node/' . $nid 构造,想知道有没有更推荐的办法。如果节点设置了别名又应该怎么获取?谢谢。

0
0

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();
3
0
登录注册后添加答案