当前页面的路由名称在page.html.twig
?中可用。该页面由默认反馈表单生成。
当前页面的路由名称在page.html.twig
?中可用。该页面由默认反馈表单生成。
Answers:
要获取当前路线名称,请使用:
$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']