Heim > php教程 > PHP开发 > Hauptteil

Zusammenfassung der Routing-Konfiguration des Laravel-Frameworks und Einstellungstipps

高洛峰
Freigeben: 2016-12-27 11:12:49
Original
1462 Leute haben es durchsucht

Grundlegende Routen

Der Großteil der Routen Ihrer Anwendung wird in der Datei app/routes.php definiert. Die einfachste Route in Laravel besteht aus einem URI und einem Abschlussaufruf.

Grundlegende GET-Route

<span style="font-size: 16px;">Route::get(&#39;/&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>
Nach dem Login kopieren

Grundlegende POST-Route

<span style="font-size: 16px;">Route::post(&#39;foo/bar&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>
Nach dem Login kopieren

Registrieren Sie eine Route, um auf alle HTTP-Methoden zu reagieren

<span style="font-size: 16px;">Route::any(&#39;foo&#39;, function()<br/>{<br/>   return &#39;Hello World&#39;;<br/>});<br/></span>
Nach dem Login kopieren

Zugriff auf eine Route über HTTPS erzwingen

<span style="font-size: 16px;">Route::get(&#39;foo&#39;, array(&#39;https&#39;, function()<br/>{<br/>    return &#39;Must be over HTTPS&#39;;<br/>}));<br/></span>
Nach dem Login kopieren

Oft muss eine Route generiert werden URLs, die auf einer Route basieren, können Sie mit der URL::to-Methode erreichen:

<span style="font-size: 16px;">$url = URL::to(&#39;foo&#39;);<br/></span>
Nach dem Login kopieren

Routenparameter

<span style="font-size: 16px;">Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>return &#39;User &#39;.$id;<br/>});<br/></span>
Nach dem Login kopieren

Optionale Routenparameter

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = null)<br/>{<br/>return $name;<br/>});<br/></span>
Nach dem Login kopieren

Optionale Routenparameter mit Standardwerten

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = &#39;John&#39;)<br/>{<br/>return $name;<br/>});<br/></span>
Nach dem Login kopieren

Route mit Einschränkungen durch reguläre Ausdrücke

<span style="font-size: 16px;">Route::get(&#39;user/{name}&#39;, function($name)<br/>{<br/>//<br/>})<br/>->where(&#39;name&#39;, &#39;[A-Za-z]+&#39;);<br/>Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>//<br/>})<br/>->where(&#39;id&#39;, &#39;[0-9]+&#39;);<br/></span>
Nach dem Login kopieren

Routenfilter

Routenfilter bieten eine einfache Möglichkeit, den Zugriff auf bestimmte Routen einzuschränken, die Sie für Ihre Site erstellen müssen. Sehr nützlich bei der Authentifizierung Bereiche. Das Laravel-Framework enthält einige Routing-Filter, wie z. B. Authentifizierungsfilter, auth.basic-Filter, Gastfilter und CSRF-Filter. Sie werden in der Datei app/filters.php gespeichert.

Definieren Sie einen Routing-Filter

Route::filter(&#39;old&#39;, function()
{
if (Input::get(&#39;age&#39;) < 200)
{
return Redirect::to(&#39;home&#39;);
}
});
Nach dem Login kopieren

Wenn eine Antwort von einem Routing-Filter zurückgegeben wird, wird diese Antwort als Antwort auf diese Anfrage betrachtet und das Routing wird nicht ausgeführt after filter wird ebenfalls de-ausgeführt.

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;old&#39;, function()
{
return &#39;You are over 200 years old!&#39;;
}));
Nach dem Login kopieren

Geben Sie einen Routenfilter für eine Route an

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;auth|old&#39;, function()
{
return &#39;You are authenticated and over 200 years old!&#39;;
}));
Nach dem Login kopieren

Geben Sie Routenfilterparameter an

Route::filter(&#39;age&#39;, function($route, $request, $value)
{
//
});
Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;age:200&#39;, function()
{
return &#39;Hello World&#39;;
}));
Nach dem Login kopieren

Wenn der Routenfilter als dritte Antwort für Parameter $ empfängt Antwort:

Route::filter(&#39;log&#39;, function($route, $request, $response, $value)
{
//
});
Nach dem Login kopieren

Muster für grundlegende Routenfilter

Möglicherweise möchten Sie Filter für eine Reihe von Routen basierend auf einem URI angeben.

Route::filter(&#39;admin&#39;, function()
{
//
});
Route::when(&#39;admin/*&#39;, &#39;admin&#39;);
Nach dem Login kopieren

Im obigen Beispiel wird der Admin-Filter auf alle Routen angewendet, die mit admin/ beginnen. Das Sternchen fungiert als Platzhalterzeichen und passt zu allen Zeichenkombinationen.

Sie können Musterfilter auch durch Angabe von HTTP-Methoden einschränken:

Route::when(&#39;admin/*&#39;, &#39;admin&#39;, array(&#39;post&#39;));
Nach dem Login kopieren

Filterklassen

Für erweiterte Filter können Sie eine Klasse anstelle einer Abschlussfunktion verwenden. Da es sich bei der Filterklasse um einen IoC-Container handelt, der sich außerhalb der Anwendung befindet, können Sie die Abhängigkeitsinjektion im Filter verwenden, um das Testen zu vereinfachen.

Definieren Sie eine Filterklasse

class FooFilter {
public function filter()
{
// Filter logic...
}
}
Nach dem Login kopieren

Registrieren Sie einen klassenbasierten Filter

Route::filter(&#39;foo&#39;, &#39;FooFilter&#39;);
Nach dem Login kopieren

Benannte Routen

Benannte Routen sind in Specify einfacher zu verwenden Routen beim Generieren von Weiterleitungen oder URLs. Sie können einen Namen für die Route wie folgt angeben:

Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, function()
{
//
}));
Nach dem Login kopieren

Sie können auch einen Routennamen für die Controller-Methode angeben:

  Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, &#39;uses&#39; => 
&#39;UserController@showProfile&#39;));
Nach dem Login kopieren

Wenn Sie jetzt URLs oder Sprünge generieren Name einer Route:

$url = URL::route(&#39;profile&#39;);
$redirect = Redirect::route(&#39;profile&#39;);
Nach dem Login kopieren

Sie können die Methode currentRouteName verwenden, um den Namen einer Route abzurufen:

$name = Route::currentRouteName();
Nach dem Login kopieren

Routengruppe

Manchmal möchten Sie vielleicht Wenden Sie einen Filter auf eine Gruppe von Routen an. Sie müssen nicht für jede Route Filter angeben, Sie können Routengruppen verwenden:

Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
Route::get(&#39;/&#39;, function()
{
// Has Auth Filter
});
Route::get(&#39;user/profile&#39;, function()
{
// Has Auth Filter
});
});
Nach dem Login kopieren

Subdomain-Routing

Laravel-Routing kann auch mit Platzhaltern versehene Subdomains verarbeiten und den Platzhalter aus dem Domänennamen beziehen Parameter:

Subdomain-Route registrieren

Route::group(array(&#39;domain&#39; => &#39;{account}.myapp.com&#39;), function()
{
Route::get(&#39;user/{id}&#39;, function($account, $id)
{
//
});
});
Nach dem Login kopieren

Routenpräfix

Eine Gruppe von Routen kann der Routengruppe ein Präfix hinzufügen, indem sie die Präfixoption im Attributarray verwendet:

Präfix zur Routengruppe hinzufügen

Route::group(array(&#39;prefix&#39; => &#39;admin&#39;), function()
{
Route::get(&#39;user&#39;, function()
{
//
});
});
Nach dem Login kopieren

Routenmodellbindung

Die Modellbindung bietet eine einfache Möglichkeit, Modelle in Routen einzufügen. Anstatt beispielsweise nur die ID eines Benutzers einzufügen, können Sie eine gesamte Benutzermodellinstanz basierend auf einer angegebenen ID einfügen. Verwenden Sie zunächst die Methode Route::model, um das erforderliche Modell anzugeben:

Binden Sie eine Variable an das Modell

Route::model(&#39;user&#39;, &#39;User&#39;);
Nach dem Login kopieren

Definieren Sie dann eine Route mit dem Parameter {user}:

Route::get(&#39;profile/{user}&#39;, function(User $user)
{
//
});
Nach dem Login kopieren

Da wir den Parameter {user} an das Benutzermodell gebunden haben, wird eine Benutzerinstanz in die Route eingefügt. So wird beispielsweise eine Anfrage für Profil/1 eine Benutzerinstanz mit der ID 1 injizieren.

Hinweis: Wenn diese Modellinstanz nicht in der Datenbank gefunden wird, wird ein 404-Fehler ausgegeben.

Wenn Sie Ihr eigenes Verhalten angeben möchten, das nicht gefunden wird, können Sie als drittes Argument einen Abschluss an die Modellmethode übergeben:

Route::model(&#39;user&#39;, &#39;User&#39;, function()
{
throw new NotFoundException;
});
Nach dem Login kopieren

Manchmal möchten Sie Ihre eigene Methode verwenden Um Routenparameter zu verarbeiten, können Sie die Route::bind-Methode verwenden:

Route::bind(&#39;user&#39;, function($value, $route)
{
return User::where(&#39;name&#39;, $value)->first();
});
Nach dem Login kopieren

Löst einen 404-Fehler aus

Es gibt zwei Möglichkeiten, einen 404-Fehler in der Route manuell auszulösen. Erstens können Sie die App::abort-Methode verwenden:

App::abort(404);
Nach dem Login kopieren

Zweitens können Sie eine Instanz von SymfonyComponentHttpKernelExceptionNotFoundHttpException auslösen.

Weitere Informationen zur Behandlung von 404-Ausnahmen und zur Verwendung benutzerdefinierter Antworten für diese Fehler finden Sie im Kapitel „Fehler“.

Routing zu Controllern

Laravel ermöglicht Ihnen nicht nur das Routing zu Abschlüssen, sondern auch zu Controller-Klassen und ermöglicht Ihnen sogar die Erstellung von Ressourcen-Controllern.

Weitere Informationen finden Sie unter Access Controller-Dokumentation.

Weitere Artikel zur Zusammenfassung der Routing-Konfiguration des Laravel-Frameworks und Einstellungstipps finden Sie auf der chinesischen PHP-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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!