Laravelのurl()関数を変更してURLのルートアドレスを生成する方法の紹介

巴扎黑
リリース: 2023-03-14 22:04:02
オリジナル
1458 人が閲覧しました

この記事では主に、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!