Maison > développement back-end > tutoriel php > Introduction à la méthode de modification de la fonction url() dans Laravel pour générer l'adresse racine de l'URL

Introduction à la méthode de modification de la fonction url() dans Laravel pour générer l'adresse racine de l'URL

巴扎黑
Libérer: 2023-03-14 22:04:02
original
1569 Les gens l'ont consulté

Cet article vous présente principalement les informations pertinentes sur la façon de modifier la fonction url() dans Laravel pour générer l'adresse racine de l'URL. L'article la présente en détail à travers l'exemple de code, qui a une certaine valeur de référence que tout le monde peut apprendre. ou utilisez Laravel. Amis qui en ont besoin, veuillez suivre l'éditeur pour apprendre ensemble.

Préface

Cet article vous présente principalement le contenu pertinent de la modification de l'adresse racine de l'URL générée par la fonction url() dans Laravel. Je pense que tout le monde le connaît. Je sais qu'il y a une url() dans la fonction d'assistance de Larevel, qui peut générer une URL complète à partir du répertoire donné :


// return: https://skin.dev/user/profile
url('user/profile')
Copier après la connexion
Mais la partie de l'URL générée par cette chose qui doit être complétée est automatiquement déterminée par le framework basé sur la requête, et les choses automatiquement déterminées tournent parfois mal (par exemple, lorsqu'un une couche de proxy inverse est utilisée).

Le document ne mentionne pas comment personnaliser l'adresse racine et la partie en-tête de protocole (http(s)) dans l'URL qu'il génère, ce qui est très frustrant. Alors que devons-nous faire ?

Voyons d'abord où url() est défini :


# 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);
}
Copier après la connexion
Comme vous pouvez le voir, c'est de Laravel Un IlluminateContractsRoutingUrlGenerator est analysé hors du conteneur de service et les paramètres sont transmis à la méthode to de cet objet.

La classe UrlGenerator est liée au conteneur de services dans le fournisseur de services 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;
 });
}
Copier après la connexion
Cela signifie que nous pouvons accéder à tout moment au UrlGenerator dans le conteneur de service via le résumé de l'URL et le modifier.

Et il expose les méthodes dont nous avons besoin : forceSchema et forceRootUrl.

Le code pour modifier l'adresse racine dans l'URL générée par la fonction url() est le suivant :


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

// 强制生成使用 HTTPS 协议的 URL
app('url')->forceSchema('https');
Copier après la connexion
Les codes ci-dessus sont recommandés. Placez-le dans un ServiceProvider personnalisé, afin que tous les liens générés par la fonction url() utilisent l'adresse racine et le protocole définis ci-dessus.

Donc, pour vraiment maîtriser les choses de Laravel, il ne suffit pas de lire la documentation. De plus, la documentation du code source de Laravel est très bonne, elle est très claire à lire et vous pouvez apprendre beaucoup de choses.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal