リソースルーティング (CURD)
リソース ルーティング
リソース ルーティングは、特に CURD 操作に適したルートのバッチを迅速に生成できます
次のように、RESTFul リクエストのリソース ルーティングの設定をサポートします:
Route::resource('blog', 'Blog');
は、blog という名前のリソースがブログ コントローラーにルーティングされることを意味します。システムは、次の 7 つのルーティング ルールを自動的に登録します:
識別 | リクエストの種類 | ルーティング ルールの生成 | 対応する操作方法 (デフォルト) |
---|---|---|---|
GET | ブログ
| index||
GET | blog/create
| create||
投稿 | ブログ
| #保存||
GET | blog/:id
| read||
GET | blog/:id/edit
| edit||
PUT | 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) { } }##