drupal_get_title()
Drupal 8から削除されました。Drupal8でページタイトルを取得するにはどうすればよいですか?
drupal_get_title()
Drupal 8から削除されました。Drupal8でページタイトルを取得するにはどうすればよいですか?
回答:
変更レコードを確認すると、次のことがわかります。drupal_set_title()およびdrupal_get_title()が削除されました。
すべての情報について変更通知を読む必要がありますが、ここが出発点です。
drupal_get_title()
ルートのタイトルをさまざまな方法で設定できるようになったため(上記を参照)、drupal_get_title()が削除されました。その代わりに、title_resolverサービスを呼び出す必要があります。
Drupal 7
<?php $title = drupal_get_title(); ?>
Drupal 8
<?php $request = \Drupal::request(); if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) { $title = \Drupal::service('title_resolver')->getTitle($request, $route); } ?>
あたりとしてbatch_test.module
(D8.4)以下はうまく動作するはずです:
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
詳細については、を参照してくださいpublic function TitleResolver::getTitle
。
この質問の受け入れられた応答は古くなっています。ルートパラメータ、ルート名、ルートオブジェクトにRouteMatchを介してアクセスする必要があるをご覧ください。
あなたは使うべきcurrent_route_match現在のルートを取得するためにサービスをして、そのパラメータを読み取りまたは変更します。これはsymfonyなどの魔法をラップします。
手続き型コードでは、次のようなコードを使用します。
$route = \Drupal::routeMatch()->getCurrentRouteMatch()->getRouteObject();
$title = $route->getDefault('_title');
オブジェクト指向のコードでは、依存性注入を使用してサービスを注入する必要があります。
$route->getDefault('_title');
だけ$route->getDefault('_title_callback');
?
Drupal 8
$request = \Drupal::request();
// Assuming the Request is $request.
if ($request->attributes->has('_title')) {
return $request->attributes->get('_title');
}
->get('_MAGIC')
メソッドは残念ながら非推奨であり、ほとんどがD8から削除されているようです:drupal.org/node/2124749