Heim >php教程 >PHP开发 >Zusammenfassung der Routing-Konfiguration des Laravel-Frameworks und Einstellungstipps

Zusammenfassung der Routing-Konfiguration des Laravel-Frameworks und Einstellungstipps

高洛峰
高洛峰Original
2016-12-27 11:12:491543Durchsuche

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>

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>

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>

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>

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>

Routenparameter

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

Optionale Routenparameter

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

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>

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>

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;);
}
});

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;;
}));

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;;
}));

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;;
}));

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

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

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;);

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;));

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...
}
}

Registrieren Sie einen klassenbasierten Filter

Route::filter(&#39;foo&#39;, &#39;FooFilter&#39;);

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()
{
//
}));

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;));

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

$url = URL::route(&#39;profile&#39;);
$redirect = Redirect::route(&#39;profile&#39;);

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

$name = Route::currentRouteName();

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
});
});

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)
{
//
});
});

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()
{
//
});
});

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;);

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

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

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;
});

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();
});

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);

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!

Stellungnahme:
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