web-dev-qa-db-ja.com

URIからRouteオブジェクトを取得する方法は?

Urlオブジェクト、または/node/2などのパスの単純な文字列表現さえある場合、完全なRouteオブジェクトを取得するにはどうすればよいですか?

6
pfrenssen

この情報はSymfonyルーターから取得できます。これには、Drupalでrouter.no_access_checksサービスを通じてアクセスできます。

単純なパスがある場合(パスの先頭にスラッシュがあることに注意してください):

$router = \Drupal::service('router.no_access_checks');
$result = $router->match('/node/2');

Urlオブジェクトがある場合:

$router = \Drupal::service('router.no_access_checks');
$result = $router->match($url->toString());

これは、ルートオブジェクトと、ルート名やルートパラメータ、コントローラ、タイトルコールバック、さらにURLで表されるエンティティオブジェクトなどのその他の有用な情報を含む配列を返します。

9
pfrenssen