Drupal 8で現在のエイリアスやパスを取得するにはどうすればよいですか?
Drupal 7でこれを行いましたdrupal_get_path_alias()
。Drupal 8で使用すべき同等のコードは何ですか?
Drupal 8で現在のエイリアスやパスを取得するにはどうすればよいですか?
Drupal 7でこれを行いましたdrupal_get_path_alias()
。Drupal 8で使用すべき同等のコードは何ですか?
回答:
その他の回答の一部は、Drupal 8の以前のアルファ版またはベータ版でのみ正しいか、不完全であると思われました。beta7(そしてできれば永久に)の時点で、次のルールが適用されるはずです。
現在の生のパス(エイリアスのないDrupalパス):
$current_path = \Drupal::service('path.current')->getPath()
現在のURIの場合、これはリクエストを非常に直接表現しています(クエリ文字列を含むこともあります):
$current_uri = \Drupal::request()->getRequestUri();
もちろん$current_uri
、ユーザーがリクエストしたものを表すだけであるため、リクエストで利用可能なエイリアスであっても、この値がエイリアスを提供するという保証はありません。したがって、あなたが求めていることを厳密に行うには(利用可能な場合はエイリアスを取得し、利用できない場合はパスを取得します)、あなたはできると思います:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
もちろん、実行している処理のタイプにもよりますが、パスではなくルートを使用するのが最善かもしれませんが、それはまったく別のトピックだと思います。
::getAliasByPath()
先行するスラッシュなしのパス文字列を受け入れなくなるメモ(beta13が信じられているため)。
getAliasByPath
言語接頭辞なしでパスを返します。これを解決する方法はありますか?
URLエイリアスのないURLの適切な方法。
$current_path = \Drupal::service('path.current')->getPath()
\Drupal::request()->getRequestUri();
尊敬Drupalはサブフォルダにインストールされますか?
Drupal 8では、Twigでこれを行うことができます。
{{ url('<current>') }}
例:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
from:https : //www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
{{ url('<current>') }}
置換パターン]にリストされていなくても、リンクパスは受け入れます。
Drupal 7で現在のパスを取得するには、を使用しますcurrent_path()
が、Drupal 8ではを使用します$url = Url::fromRoute('<current>');
。
current_path()
そしてdrupal_get_path_alias()
それらは異なる機能です。
Twigテンプレート/ Drupal 8の場合:
現在のページのURL
{{ url('<current>') }}
パスのみ
{{ path('<current>') }}
参照:https : //www.drupal.org/docs/8/theming/twig/functions-in-twig-templates