リソースルーティング (CURD)



リソース ルーティング

リソース ルーティングは、特に CURD 操作に適したルートのバッチを迅速に生成できます

次のように、RESTFul リクエストのリソース ルーティングの設定をサポートします:

Route::resource('blog', 'Blog');

は、blog という名前のリソースがブログ コントローラーにルーティングされることを意味します。システムは、次の 7 つのルーティング ルールを自動的に登録します:


#indexGETindexcreateGETcreate 保存投稿#保存読むGETreadeditGETeditupdatePUT削除##DELETE#指定される特定のコントローラーはルーティング アドレスによって決定されます。ブログ コントローラーに対して上記の対応する操作メソッドを作成するだけで済みます。次の URL アクセスがサポートされています:
http://serverName/blog/
http://serverName/blog/128
http://serverName/blog/28/edit
識別リクエストの種類ルーティング ルールの生成対応する操作方法 (デフォルト)
ブログ
blog/create
ブログ
blog/:id
blog/:id/edit
blog/:id#更新
blog/:id# delete
ブログ コントローラーの対応するメソッドは次のとおりです:

<?php
namespace app\controller;

class Blog
{
    public function index()
    {
    }

    public function read($id)
    {
    }

    public function edit($id)
    {
    }
}

コマンド ラインからリソース コントローラー クラスをすばやく作成できます (「リソースはコントローラーの章で後述)、コントローラーのセクション)。

デフォルトの ID パラメーター名を変更できます。例:

Route::resource('blog', 'Blog')
    ->vars(['blog' => 'blog_id']);

コントローラーのメソッド定義は次のように調整する必要があります:

<?php
namespace app\controller;

class Blog
{
    public function index()
    {
    }

    public function read($blog_id)
    {
    }

    public function edit($blog_id)
    {
    }
}

制限することもできます。リソース ルーティング メソッド (アイデンティティ) を定義するときに実行します。例:

// 只允许index read edit update 四个操作
Route::resource('blog', 'Blog')
    ->only(['index', 'read', 'edit', 'update']);
    
// 排除index和delete操作
Route::resource('blog', 'Blog')
    ->except(['index', 'delete']);

リソース ルーティングの ID は変更できませんが、生成されたルーティング ルールと対応する操作メソッドは変更できます。

リソース ルーティング識別子の対応する操作を変更する必要がある場合は、次のメソッドを使用できます:

Route::rest('create',['GET', '/add','add']);

設定後の URL アクセスは次のようになります:

http://serverName/blog/create
变成
http://serverName/blog/add

Createブログページの対応操作を追加する操作方法も変更になりました。

次のようにバッチ変更をサポートします:

Route::rest([
    'save'   => ['POST', '', 'store'],
    'update' => ['PUT', '/:id', 'save'],
    'delete' => ['DELETE', '/:id', 'destory'],
]);

リソースのネスト

リソース ルートのネストをサポートします。たとえば:

Route::resource('blog', 'Blog');
Route::resource('blog.comment','Comment');
次のアドレスにアクセスできます:
http://serverName/blog/128/comment/32
http://serverName/blog/128/comment/32/edit

生成されるルーティング ルールは次のとおりです:

blog/:blog_id/comment/:id
blog/:blog_id/comment/:id/edit

対応するコメント コントローラーの操作メソッドは次のとおりです:

<?php

namespace app\controller;

class Comment
{
    public function edit($id, $blog_id)
    {
    }
}

editメソッド パラメータの順序は任意ですが、パラメータ名は定義要件を満たす必要があります。

変数名を変更する必要がある場合は、次のように変更できます:

// 更改嵌套资源路由的blog资源的资源变量名为blogId
Route::resource('blog.comment', 'index/comment')
    ->vars(['blog' => 'blogId']);

コメント コントローラーに対応する操作メソッドは、次のように変更されます:

<?php
namespace app\controller;

class Comment
{
    public function edit($id, $blogId)
    {
    }
}

##