URL-Generierung
Verwenden Sie die Methode thinkfacadeRoute::buildUrl(), um eine URL zu generieren.
Diese Methode gibt eine thinkrouteUrl-Objektinstanz zurück. Da die __toString-Methode verwendet wird, kann die Routing-Adresse direkt ausgegeben werden.
echo \think\facade\Route::buildUrl();
Wenn Daten an den Client zurückgegeben werden, können Sie sie vor der Rückgabe in einen String-Typ umwandeln.
$url = (string) \think\facade\Route::buildUrl();
Routing-Identifikatoren verwenden
Die Definition von Adressausdrücken ist für verschiedene Routing-Adressmethoden unterschiedlich. Die Parameter werden separat über den zweiten Parameter übergeben. Angenommen, wir definieren eine Routing-Regel wie folgt:
Route::rule('blog/:id','index/blog/read');
Wenn keine angegebene Routing-ID vorhanden ist, kann die Routing-Adresse direkt zum Generieren der URL-Adresse verwendet werden:
Route::buildUrl('index/blog/read', ['id' => 5, 'name' => 'thinkphp']);
Wenn wir bei der Registrierung der Route die Routing-ID
Route::rule('blog/:id','index/blog/read')->name('blog_read');
angeben, dann muss die Routing-ID zur Generierung der URL-Adresse
Route::buildUrl('blog_read', ['id' => 5, 'name' => 'thinkphp']);verwendet werden
Die oben genannten Methoden generieren die folgende URL-Adresse:
/index.php/blog/5/name/thinkphp.html
Wenn Ihre Umgebung REWRITE unterstützt, lautet die generierte URL-Adresse:
/blog/5/name/thinkphp.html
Wenn Sie Folgendes konfigurieren:
'url_common_param'=>true
, dann wird die generierte URL-Adresse zu:
/index.php/blog/5.html?name=thinkphp
Variablen, die nicht in den Routing-Regeln enthalten sind, verwenden direkt normale URL-Parameter.
Es ist zu beachten, dass die URL-Adressgenerierung nicht die Gültigkeit der Route erkennt, sondern nur qualifizierende Routing-Regeln basierend auf der gegebenen Routing-Adresse und den Parametern generiert.
Routing-Adresse verwenden
Wir können die Routing-Adresse auch direkt zum Generieren einer URL verwenden, zum Beispiel:
Wir definieren Routing-Regeln wie folgt :
Route::get('blog/:id' , 'blog/read');
Sie können die folgende Methode verwenden, um mithilfe von Routing-Regeln direkt eine URL-Adresse zu generieren:
Route::buildUrl('/blog/5');
Dann wird die automatisch generierte URL-Adresse zu:
/index.php/blog/5.html
URL-Suffix
Standardmäßig liest das System automatisch den Konfigurationsparameter url_html_suffix als URL-Suffix (Standard ist HTML), wenn wir Folgendes festlegen:
'url_html_suffix' => 'shtml'
, dann wird die automatisch generierte URL-Adresse zu:
/index.php/blog/5.shtml
Wenn wir mehrere URs festlegen Das L-Suffix unterstützt
'url_html_suffix' => 'html|shtml'
, und das erste Suffix wird zum Generieren der URL-Adresse verwendet, sodass die automatisch generierte URL-Adresse immer noch lautet:
/index.php/blog/5.html
, wenn Sie dies angeben möchten Um ein URL-Suffix zu generieren, können Sie Folgendes verwenden:
Route::buildUrl('blog/read', ['id'=>5])->suffix('shtml');
Domänennamengenerierung
Die standardmäßig generierte URL-Adresse enthält keinen Domänennamen verwenden Wenn Sie mehrere Domänennamen bereitstellen oder eine URL-Adresse mit einem Domänennamen generieren möchten, müssen Sie den vierten Parameter übergeben. Dieser Parameter hat zwei Verwendungszwecke:
Automatisch einen Domänennamen generieren
Route::buildUrl('index/blog/read', ['id'=>5]) ->suffix('shtml') ->domain(true);
Wenn die vier Parameter als „true“ übergeben werden, bedeutet dies, dass der Domänenname automatisch generiert wird. Wenn Sie url_domain_deploy aktivieren, wird automatisch der Domänenname identifiziert, der der aktuellen URL-Regel entspricht.
Zum Beispiel haben wir die Domainnamen-Routing-Informationen wie folgt registriert:
Route::domain('blog','index/blog');
Dann wird die obige URL-Adresse generiert als:
http://blog.thinkphp.cn/read/id/5.shtml
Geben Sie den Domänennamen an
Sie können den Domänennamen, der zum Generieren der Adresse benötigt wird, auch explizit übergeben, zum Beispiel:
Route::buildUrl('blog/read', ['id'=>5])->domain('blog');
oder übergeben das Komplette Die vom Domänennamen
Route::buildUrl('index/blog/read', ['id'=>5])->domain('blog.thinkphp.cn');
generierte URL-Adresse lautet:
http://blog.thinkphp.cn/read/id/5.shtml
Sie können den Domänennamen auch direkt im ersten Parameter übergeben, zum Beispiel:
Route::buildUrl('index/blog/read@blog', ['id'=>5]); Route::buildUrl('index/blog/read@blog.thinkphp.cn', ['id'=>5]);
Ankerpunkt generieren
Unterstützt das Generieren von URL-Ankerpunkten, die direkt in URL-Adressparametern verwendet werden können:
Route::buildUrl('index/blog/read#anchor@blog', ['id'=>5]);
Wenn Sie Ankerpunkte und Domainnamen zusammen verwenden, achten Sie auf den Ankerpunkt vorne und den Domainnamen hinten.
Die generierte URL-Adresse lautet:
http://blog.thinkphp.cn/read/id/5.html#anchor
plus die Eintragsdatei
Manchmal muss der von uns generierten URL-Adresse möglicherweise ein Index hinzugefügt werden. php oder entfernen Sie index.php. In den meisten Fällen ermittelt das System automatisch, Wenn Sie feststellen, dass ein Problem mit der automatisch generierten Adresse vorliegt, können Sie die folgende Methode verwenden:
Route::buildUrl('index/blog/read', ['id'=>5])->root('/index.php');
Assistentenfunktion
Das System stellt eine URL bereit Assistentenfunktion, um dieselben Funktionen auszuführen, zum Beispiel:
url('index/blog/read', ['id'=>5])->suffix('html')->domain(true)->root('/index.php');