Heim > Backend-Entwicklung > PHP-Tutorial > Einführung in die Methode zum Ändern der Funktion url() in Laravel, um die Stammadresse der URL zu generieren

Einführung in die Methode zum Ändern der Funktion url() in Laravel, um die Stammadresse der URL zu generieren

巴扎黑
Freigeben: 2023-03-14 22:04:02
Original
1595 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum Ändern der URL()-Funktion in Laravel ein, um die URL-Stammadresse zu generieren. Der Artikel führt sie im Detail anhand des Beispielcodes ein, der einen bestimmten Referenzwert hat, den jeder lernen kann Oder verwenden Sie Laravel. Freunde, die es benötigen, folgen bitte dem Herausgeber, um gemeinsam zu lernen.

Vorwort

Dieser Artikel führt Sie hauptsächlich in den relevanten Inhalt der Änderung der Stammadresse der von der Funktion url() generierten URL ein Laravel. Ich glaube, jeder kennt es. Es gibt eine URL() in der Hilfsfunktion von Larevel, die eine vollständige URL aus dem angegebenen Verzeichnis generieren kann:


// return: https://skin.dev/user/profile
url('user/profile')
Nach dem Login kopieren

Aber der Teil der von diesem Ding generierten URL, der vervollständigt werden muss, wird automatisch vom Framework basierend auf der Anfrage bestimmt, und die automatisch ermittelten Dinge gehen manchmal schief (z. B. wenn a Schicht des Reverse-Proxys verwendet wird).

Das Dokument erwähnt nicht, wie wir die Stammadresse und den Protokoll-Header-Teil (http(s)) in der generierten URL anpassen können, was sehr frustrierend ist. Was sollen wir also tun?

Schauen wir uns zunächst an, wo url() definiert ist:


# 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);
}
Nach dem Login kopieren

Wie Sie sehen können, ist es so von Laravel Ein IlluminateContractsRoutingUrlGenerator wird aus dem Service-Container geparst und die Parameter werden an die to-Methode dieses Objekts übergeben.

Die UrlGenerator-Klasse ist an den Service-Container im Service-Provider src/Illuminate/Routing/RoutingServiceProvider.php gebunden:


/**
 * 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;
 });
}
Nach dem Login kopieren

Das bedeutet das Wir können jederzeit über die URL-Zusammenfassung auf den UrlGenerator im Service-Container zugreifen und ihn ändern.

Und es stellt die Methoden bereit, die wir brauchen: forceSchema und forceRootUrl.

Der Code zum Ändern der Stammadresse in der von der Funktion url() generierten URL lautet wie folgt:


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

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

Es wird empfohlen, die oben genannten Codes in einem benutzerdefinierten ServiceProvider zu platzieren, sodass alle von der Funktion url() generierten Links die oben definierte Stammadresse und das oben definierte Protokoll verwenden.

Um Laravel wirklich zu beherrschen, reicht es nicht aus, nur die Dokumentation zu lesen. Darüber hinaus ist die Quellcode-Dokumentation von Laravel sehr gut, sie ist sehr klar zu lesen und man kann viel lernen.

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zum Ändern der Funktion url() in Laravel, um die Stammadresse der URL zu generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage