Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung von Beispielen für HTTP-Routing und die Erstellung von Controllern und Ressourcen-Routing in Laravel5.2

Detaillierte Erläuterung von Beispielen für HTTP-Routing und die Erstellung von Controllern und Ressourcen-Routing in Laravel5.2

黄舟
黄舟Original
2017-09-11 09:54:321896Durchsuche

1. HTTP-Routing

Alle Routen werden in der Datei app/Http/routes.php definiert, die von der Klasse AppProvidersRouteServiceProvider geladen wird.

1. Einfaches Routing

Einfaches Laravel-Routing akzeptiert nur einen URI und einen Abschluss


Route::get('foo', function () {
    return 'Hello, Laravel!';
});

Für gängige HTTP-Anfragen verfügt Laravel über 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); //响应所有请求

Unter diesen kann $callback ein Abschluss oder eine Controller-Methode sein. Tatsächlich gibt es in der Entwicklung viele Situationen, in denen Controller-Methoden verwendet werden.

2. Routing-Parameter


//单个路由参数
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. Erstellen Sie einen Controller

Verwenden Sie den Artisan-Befehl, um php artisan make zu erstellen : Controller UserController

Jetzt 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. Routengruppierung

2.1 Routenpräfix und 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');

Nehmen Sie das erste als Beispiel:

Parameter 1: admin/login bedeutet, dass dieser URI die Admin-/Login-Ressource im Website-Stammverzeichnis anfordert, vollständig Adresse Es ist http://domain name/admin/login (Apache’s Route 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 Namespace AppHttpControllers 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 Route, die dem Ressourcencontroller zugeordnet ist, Laravel Resource Controller Es hat Integrierte 7 Methoden zum Hinzufügen, Löschen, Ändern und Überprüfen von Ressourcen und 7 Routen.

Erstellen Sie zunächst Resource Controller ArticleController


php artisan make:controller Admin\ArticleController  --resource

Bitte stellen Sie sicher, dass der obige Befehl in der App/Http/Controllers vorhanden ist Verzeichnis Admin-Verzeichnis.

Auf diese Weise wird der Ressourcencontroller in der Datei app/Http/Controllers/Admin/ArticleController.php generiert. Die 7 integrierten Methoden sind wie folgt:


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

Dann definieren Sie Ressourcenrouting . Hier entscheide ich mich immer noch dafür, es unter der Routing-Gruppe zu definieren, definieren Sie einfach eine


Route::group(array(&#39;prefix&#39; => &#39;admin&#39;, &#39;namespace&#39; => &#39;Admin&#39;), function(){ 
    Route::get(&#39;login&#39;, &#39;IndexController@login&#39;);
    Route::get(&#39;index&#39;, &#39;IndexController@index&#39;);
    // 资源路由
    Route::resource(&#39;article&#39;, &#39;ArticleController&#39;);
});

Überprüfen Sie abschließend die Route. Mit Ressourcencontroller und Ressourcenrouting können Sie sich die HTTP-Anforderungsmethoden für die oben genannten 7 Methoden ansehen.

Verwenden Sie den Artisan-Befehl php artisan route:list, um alle aktuellen Routen aufzulisten, einschließlich Anforderungsmethoden, URIs, Controller-Methoden und Middleware.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für HTTP-Routing und die Erstellung von Controllern und Ressourcen-Routing in Laravel5.2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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