获取当前页面的路由名称


24

当前页面的路由名称在page.html.twig?中可用。该页面由默认反馈表单生成。

Answers:


57

要获取当前路线名称,请使用:

$route_name = \Drupal::routeMatch()->getRouteName();

您可以在主题的“ .theme”文件中将当前页面的路由名称添加为变量。添加这样的_preprocess_page函数,并清除drupal缓存。

/**
 * Implements hook_preprocess_page().
 *
 */
function mytheme_preprocess_page(&$variables) {
  $variables['route_name'] = \Drupal::routeMatch()->getRouteName();
}

然后,您可以像这样在page.html.twig中访问:

{{ route_name }}

注意: \Drupal::routeMatch()->getRouteName()有时会返回null。

如果您在类中,则为了正确执行操作,您需要将路由匹配服务注入构造函数中,然后以这种方式调用它:

$this->currentRouteMatch->getRouteName()

构造函数(和变量)将如下所示:

  /**
   * The current route match.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $currentRouteMatch;

  /**
   * Constructs a new ThemeTestSubscriber.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
   */
  public function __construct(RouteMatchInterface $current_route_match) {
    $this->currentRouteMatch = $current_route_match;
  }

如果是服务类,则将其传递到自定义模块中yaml文件中的服务中:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']

某个地方有一个CLI(线路模式命令)显示了所有drupal路由...似乎不记得它是什么...我将进行更新(除非其他人知道)
sea26.2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.