現在のページのルート名はpage.html.twig
?このページは、デフォルトのフィードバックフォームによって生成されます。
現在のルート名を取得するには、次を使用します:
_$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']
_