gpt4 book ai didi

drupal - 在 Drupal 8 中从节点 ID 创建链接

转载 作者:行者123 更新时间:2023-12-03 12:26:49 25 4
gpt4 key购买 nike

我正在检查 Drupal 8 并尝试根据文章的节点 ID 生成链接。
在 Drupal 7 中,它类似于:

$options = array('absolute' => TRUE);
$nid = 1; // Node ID
$url = url('node/' . $nid, $options);

这会产生具有正确 url-alias 的绝对链接。

所以 url() 函数似乎已被弃用; Drupal-8 的方式是什么?
看起来对我来说是一个非常基本的功能,但我找不到任何有用的引用资料。

最佳答案

您需要使用 \Drupal\Core\Url 类,特别是它的 fromRoute 静态方法。 Drupal 8 使用名称与其实际 URL 路径不同的路由。在您的情况下,要使用的路由是节点实体的规范路由:entity.node.canonical . \Drupal\Core\Url::fromRoute()不会返回一个字符串,而是一个对象。要将 URL 作为字符串获取,您需要调用它的 toString() 方法。

$options = ['absolute' => TRUE];
$url = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => 1], $options);
$url = $url->toString();

静态方法不容易测试, $url->toString()需要一个初始化的容器。您可以通过调用 UrlGeneratorInterface::generateFromRoute() 来替换静态方法。在 url_generator 服务。
$options = ['absolute' => TRUE];
$url = $this->url_generator->generateFromRoute('entity.node.canonical', ['node' => 1], $options);
$url = $url->toString();

不幸的是,这个方法被标记为 @internal所以你不应该在用户代码中使用它(即在 Drupal 核心之外)。

关于drupal - 在 Drupal 8 中从节点 ID 创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35397009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com