Dieser Artikel bietet Ihnen eine Einführung in das HTTP-Routing, das Erstellen von Controllern und das Ressourcen-Routing in Laravel 5.2. Er hat einen gewissen Referenzwert. Ich hoffe, er wird Ihnen helfen.
1. HTTP-Routing
Alle Routen werden in der Datei app/Http/routes.php definiert, die von der Klasse AppProvidersRouteServiceProvider geladen wird.
Einfaches Laravel-Routing akzeptiert nur einen URI und einen Abschluss
Route::get('foo', function () { return 'Hello, Laravel!'; });
Für allgemeine HTTP-Anfragen , Laravel hat die folgenden Routen
Route::get($uri, $callback); //响应 get 请求 Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback); Route::match(['get', 'post'], $uri, $callback); //响应 get, post 请求 Route::any('foo', $callback); //响应所有请求
Darunter kann $callback eine Abschluss- oder Controller-Methode sein. Tatsächlich gibt es in der Entwicklung viele Situationen, in denen Controller-Methoden verwendet werden.
//单个路由参数 Route::get('user/{id}', function ($id) { return 'User '.$id; }); //多个路由参数 Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // }); //单个路由参数(可选) Route::get('user/{id?}', function ($id = 1) { return 'User '.$id; }); //多个路由参数(可选) Route::get('posts/{post}/comments/{comment?}', function ($postId, $commentId = 1) { // }); //注意:多个参数时,只可以对最后一个参数设置可选,其他位置设置可选会解析错误 // 正则约束单个参数 Route::get('user/{name?}', function ($name = 'Jone') { return $name; })->where('name', '\w+'); //约束参数为单词字符(数字、字母、下划线) // 正则约束多个参数 Route::get('user/{id}/{name}', function ($id, $name) { // })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
2. Controller erstellen
Verwenden Sie den Artisan-Befehl, um den PHP-Artist-UserController
zu erstellen Nun wird die Controller-Datei UserController.php im Controller-Verzeichnis app/Http/Controllers generiert.
3. Erweitertes Routing
1. Benannte Route
//命名闭包路由 Route:get('user', array('as' => 'alial', function(){}); //或 name 方法链 Route:get('user', function(){})->name('alias'); //命名控制器方法路由 Route:get('user', array('uses' => 'Admin\IndexController@index', 'as' => 'alias')); //或 name 方法链 Route:get('user', 'Admin\IndexController@index')->name('alias'));
2. Routing-Präfixsumme Namespace
Zum Beispiel gibt es zwei Routen, die auf Controller-Methoden verweisen
Route::get('admin/login', 'Admin\IndexController@login'); Route::get('admin/index', 'Admin\IndexController@index');
admin /login bedeutet das Dieser URI fordert die Admin-/Login-Ressource im Stammverzeichnis der Website an. Die vollständige Adresse lautet
http://domain name/admin/login (Apaches Routing-Rewriting ist hier aktiviert, „index.php“ wird ausgeblendet). Diese Anfrage wird der im zweiten Parameter angegebenen Controller-Methode zugeordnet. Beachten Sie, dass das Stammverzeichnis der Website das Verzeichnis ist, in dem sich die Eintragsdatei befindet. Dies ist das öffentliche Verzeichnis in Laravel. Bei der Konfiguration des Servers sollten Sie hierauf verweisen.Parameter zwei: AdminIndexController@login bedeutet, dass sich diese Controller-Methode unter dem AppHttpControllers-Namespace befindet und die Verbindung die Anmeldemethode im AppHttpControllersAdminIndexController-Controller ist.
Offensichtlich haben der URI und die Controller-Methode der beiden Routen die gleichen Teile. Durch Aktivieren der Routengruppierung können dann die gemeinsamen Teile extrahiert werden:
// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分 Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){ Route::get('login', 'IndexController@login'); Route::get('index', 'IndexController@index'); });
2.2 Ressourcenrouting
Ressourcenrouting ist die dem Ressourcencontroller zugeordnete Route. Es verfügt über integrierte 7 Methoden zum Hinzufügen, Löschen, Ändern und Überprüfen von Ressourcen und 7 Routen.
Erstellen Sie zunächst den Ressourcencontroller ArticleControllerphp artisan make:controller Admin/ArticleController --resource
<?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class LinksController extends Controller { /** * 显示一个资源的列表 * * @return \Illuminate\Http\Response */ public function index() { // } /** * 显示一个表单来创建一个新的资源 * * @return \Illuminate\Http\Response */ public function create() { // } /** * 保存最新创建的资源 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * 显示指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * 显示一个表单来编辑指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * 更新指定的资源 * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * 删除指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){ Route::get('login', 'IndexController@login'); Route::get('index', 'IndexController@index'); // 资源路由 Route::resource('article', 'ArticleController'); });
php artisan route:list, um alle aktuellen Routen aufzulisten, einschließlich Anforderungsmethoden, URIs, Controller-Methoden und Middleware.
Das obige ist der detaillierte Inhalt vonEinführung in HTTP-Routing, Erstellen von Controllern und Ressourcen-Routing in Laravel5.2 (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!