Restful 笔记
Route::resource('photos', 'PhotoController');
这个路由声明创建多个路由来处理资源上的各种行为。生成的控制器为每个行为保留了方法,同时还包括了 处理 HTTP 动作和 URI 的声明注释。
资源控制器操作处理
动作 | URI | 行为 | 路由名称 |
---|---|---|---|
GET | /photos |
index | photos.index |
GET | /photos/create |
create | photos.create |
POST | /photos |
store | photos.store |
GET | /photos/{photo} |
show | photos.show |
GET | /photos/{photo}/edit |
edit | photos.edit |
PUT/PATCH | /photos/{photo} |
update | photos.update |
DELETE | /photos/{photo} |
destroy | photos.destroy |
踩坑经历:
在 reoute/web.php 中没有使用 Route::resource() 来创建路由, 而是一项一项分开写的, 到 更新这里使用的是 Route::patch(), 而在 blade 模板中 使用的 method 是 {{ method_field('put') }} , 这样就造成了错误 no message
试了几次, 正确的做法是:
- 如果使用 Route::resource(), 那么 blade 模板里面可以是 put, 也可以是 patch
- 如果不使用 Route::resource(), 那么 blade 模板里面需要与 Route 设置的 http 请求方法一致, Route::put() 与 {{ method_field('put') }}, Route::patch() 与 {{ method_field('patch') }}
patch 与 put 的区别
定义上: patch 是局部更新, put 是全部更新; 理论上来说, 如果使用 put 而只传递了更新的字段, 那么未更新的字段被清空(也要被更新 => 全部更新)
实际使用上: 后端并没有按理论上定义的那么做( Restful 只是个风格, 推荐的标准 ), 所以没有区别, 可任选其一
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: