web-dev-qa-db-ja.com

ルートからタイトルを取得

カスタムページテンプレートにいくつかのリンクを印刷しようとしています。各ルートのタイトルとURLを使用したいと思います。

ルートからタイトルをプリントアウトしようとしています。

私は次のURLを取得できることを知っています。

$url = Url::fromRoute('route.name');

現在のページタイトルを

$request = \Drupal::request();
  if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) {
    $title = \Drupal::service('title_resolver')->getTitle($request, $route); }

しかし、特定の/別のルートからタイトルをリクエストする方法がわかりません。

前もって感謝します。

4
developon99

URL /ルートのページタイトルを取得する唯一の方法は、実際にページをリクエストしてタイトルを確認することです。その理由は、fxメタタグモジュールのように、モジュールまたはテーマがタイトルを通常のタイトルから変更する可能性があるためです。

2
googletorp

ルート名 'my.route.name'はあるがルートオブジェクト自体はない(そして@ahebrankが言及した警告を考慮に入れている)場合、@ ahebrankの答えを拡張すると、次のようになります。

    $route_provider = \Drupal::service('router.route_provider');
    $route = $route_provider->getRouteByName('my.route.name');
    $title = $oRoute->getDefault('_title');
0
ryrye

これが悪い考えになる理由はたくさんありますが、現在のリクエストコンテキストや動的な引数を無視しても問題がない場合は、デフォルトのタイトルがルートオブジェクトに保存されます。

$title = $route->getDefault('_title');

(これは多かれ少なかれ TitleResolver のフォールバック機能です)

これは、たとえば、プレーンテキストの[ビュー]ページタイトルに対して機能します。

0
ahebrank