ホームページ >バックエンド開発 >PHPチュートリアル >Laravelのurl()関数を変更してURLのルートアドレスを生成する方法の紹介
この記事では主に、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 のサービスコンテナから IlluminateContractsRoutingUrlGenerator を解析し、パラメータをこのオブジェクト メソッドの 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 抽象を使用して、URLGenerator にアクセスできることを意味します。サービスコンテナを作成して変更します。
そして、必要なメソッド、forceSchema と ForceRootUrl を公開します。
url() 関数によって生成された URL のルート アドレスを変更するコードは次のとおりです:
// 用它提供的方法检测 URL 是否有效 if (app('url')->isValidUrl($rootUrl)) { app('url')->forceRootUrl($rootUrl); } // 强制生成使用 HTTPS 协议的 URL app('url')->forceSchema('https');
すべてのリンクが生成されるように、上記のコードをカスタム ServiceProvider に配置することをお勧めします。 url() 関数によって定義されたルート アドレスとプロトコルが将来的に使用されます。
つまり、Laravel を本当にマスターするには、ドキュメントを読むだけでは十分ではありません。さらに、Laravelのソースコードドキュメントは非常に優れており、非常に読みやすく、多くのことを学ぶことができます。
以上がLaravelのurl()関数を変更してURLのルートアドレスを生成する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。