当前位置: 首页>>网站问题>>正文


获取当前路径别名或路径?

webfans 网站问题 , , 去评论

问题描述

如何获取Drupal 8中的当前别名和/或路径?

在Drupal 7中,我用drupal_get_path_alias()做了这个。我应该在Drupal 8中使用的等效代码是什么?

最佳解决方法

其他一些答案仅在之前的Drupal 8的alpha /beta版本中是正确的,或者似乎是不完整的。从beta7开始(希望永久),以下规则应适用:

对于当前的原始路径(un-aliased Drupal路径):

$current_path = \Drupal::service('path.current')->getPath()

对于当前URI,它是pretty-much请求的直接表示(它甚至可能包含查询字符串):

$current_uri = \Drupal::request()->getRequestUri();

当然,无法保证此$current_uri值会为您提供别名,即使有一个可用于请求的别名,因为它只代表用户请求的内容。所以要严格按照你的要求去做(如果可用则获取别名,如果没有则获取路径)我认为你可以这样做:

$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);

当然,根据您正在进行的处理类型,最好使用路径而不是路径,但我认为这是另一个主题。

次佳解决方法

没有URL别名的URL的正确方法。

$current_path = \Drupal::service('path.current')->getPath()

第三种解决方法

在Drupal 8中,您可以使用Twig执行此操作:

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

例:

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

来自:https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates

第四种方法

要获取Drupal 7中的当前路径,您可以使用current_path(),但在Drupal 8中使用$url = Url::fromRoute('<current>');

资料来源:https://www.drupal.org/node/2382211

第五种方法

获取当前路径(别名路径):

// Returns something like /about
$url = \Drupal\Core\Url::fromRoute('<current>');

获取当前路径(系统路径):

// Returns node/1
$path = $url->getInternalPath();

第六种方法

对于Drupal 8,这是我能找到的最干净的解决方案:

Url::fromRoute('<current>',array(),array('absolute'=>'true'));

第七种方法

在Drupal 8中有function current_path(),它返回正在查看的页面的当前URL路径。

例子:

http://example.com/node/306 returns "node/306".
http://example.com/drupalfolder/node/306 returns "node/306" while base_path() returns "/drupalfolder/".
http://example.com/path/alias (which is a path alias for node/306) returns "node/306" as opposed to the path alias.

看到这里https://api.drupal.org/api/drupal/core%21includes%21common.inc/function/base_path/8.0.x

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2716.html,转载请务必附带本地址声明。