ホームページ  >  記事  >  バックエンド開発  >  Laravelのurl()のルートアドレス変更の詳細説明

Laravelのurl()のルートアドレス変更の詳細説明

*文
*文オリジナル
2018-01-03 15:17:242618ブラウズ

この記事では主に、Laravel の url() 関数を変更して URL ルート アドレスを生成する方法について、サンプル コードを通じて詳細に紹介します。 laravel を使ってください。必要な方は以下のエディタで学習しましょう。お役に立てれば幸いです。

前書き

この記事では主に、Laravel の url() 関数を変更して URL のルートアドレスを生成する関連内容を紹介します。Larevel のヘルパーに url() があることは誰もが知っていると思います。渡すことができる関数 指定したディレクトリから完全なURLを生成する非常に便利な関数です:

// return: https://skin.dev/user/profile
url('user/profile')

ただし、これで生成されるURLのうち補完すべき部分はリクエストに基づいてフレームワークが自動的に決定します。また、自動的に決定されたものがうまくいかない場合もあります (たとえば、リバース プロキシのレイヤーが使用されている場合など)。

このドキュメントには、生成される URL のルート アドレスとプロトコル ヘッダー部分 (http(s)) をカスタマイズする方法について記載されておらず、非常にイライラさせられます。だから何をすべきか?

まず、url() が定義されている場所を見てみましょう:

# File: src/Illuminate/Foundation/helpers.php

/**
 * Generate a url for the application.
 *
 * @param string $path
 * @param mixed $parameters
 * @param bool $secure
 * @return Illuminate\Contracts\Routing\UrlGenerator|string
 */
function url($path = null, $parameters = [], $secure = null)
{
 if (is_null($path)) {
  return app(UrlGenerator::class);
 }

 return app(UrlGenerator::class)->to($path, $parameters, $secure);
}

Laravel のサービスコンテナから IlluminateContractsRou​​tingUrlGenerator を解析し、パラメータをこのオブジェクトの to メソッドに転送していることがわかります。

そして、この UrlGenerator クラスは、サービス プロバイダー src/Illuminate/Routing/RoutingServiceProvider.php:

/**
 * Register the URL generator service.
 *
 * @return void
 */
protected function registerUrlGenerator()
{
 $this->app['url'] = $this->app->share(function ($app) {
  // 略

  $url = new UrlGenerator(
   $routes, $app->rebinding(
    'request', $this->requestRebinder()
   )
  );

  return $url;
 });
}

のサービス コンテナにバインドされています。これは、URL 抽象 This UrlGenerator を通じていつでもサービス コンテナにアクセスし、変更できることを意味しますそれ。

そして、必要なメソッド、forceSchema と ForceRootUrl を公開します。

url() 関数によって生成された URL のルート アドレスを変更するコードは次のとおりです:

// 用它提供的方法检测 URL 是否有效
if (app('url')->isValidUrl($rootUrl)) {
 app('url')->forceRootUrl($rootUrl);
}

// 强制生成使用 HTTPS 协议的 URL
app('url')->forceSchema('https');

URL によって生成されたすべてのリンクが有効になるように、上記のコードをカスタム ServiceProvider に配置することをお勧めします。 () 関数は、上記で定義されたルート アドレスとプロトコルを使用します。

つまり、Laravel を本当にマスターするには、ドキュメントを読むだけでは十分ではありません。さらに、Laravelのソースコードドキュメントは非常に優れており、非常に読みやすく、多くのことを学ぶことができます。

関連する推奨事項:

Laravel がスケジュールされたタスクを実装する方法の詳細な説明

非同期プロセスを実行するための Laravel のスーパーバイザー実装方法の詳細な説明

Laravelのタスクスケジューリングコンソールの説明

以上がLaravelのurl()のルートアドレス変更の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。