Son*_*que 122 laravel laravel-4 laravel-5
我阅读文档的Laravel网站,堆栈溢出,并且谷歌,但还是不明白之间的差别Route::resource和Route::controller.
其中一个答案说Route :: resource是为了crud.但是,使用Route :: controller,我们可以完成与Route :: resource相同的操作,我们只能指定所需的操作.
他们看起来像兄弟姐妹:
Route::controller('post','PostController');
Route::resource('post','PostController');
Run Code Online (Sandbox Code Playgroud)
我们如何选择使用什么?什么是好习惯?
rya*_*ter 246
一个RESTful的资源控制器为您设置,甚至名称他们一些缺省路由.
Route::resource('users', 'UsersController');
Run Code Online (Sandbox Code Playgroud)
给你这些命名的路线:
Verb Path Action Route Name
GET /users index users.index
GET /users/create create users.create
POST /users store users.store
GET /users/{user} show users.show
GET /users/{user}/edit edit users.edit
PUT|PATCH /users/{user} update users.update
DELETE /users/{user} destroy users.destroy
Run Code Online (Sandbox Code Playgroud)
你会设置你的控制器像这样(actions =方法)
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
Run Code Online (Sandbox Code Playgroud)
您还可以选择包含或排除的操作,如下所示:
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
Run Code Online (Sandbox Code Playgroud)
的隐式控制器是更灵活的.您将根据HTTP请求类型和名称路由到您的控制器方法.但是,您没有为您定义路径名称,它将捕获相同路径的所有子文件夹.
Route::controller('users', 'UserController');
Run Code Online (Sandbox Code Playgroud)
会引导您使用某种RESTful命名方案设置控制器:
class UserController extends BaseController {
public function getIndex()
{
// GET request to index
}
public function getShow($id)
{
// get request to 'users/show/{id}'
}
public function postStore()
{
// POST request to 'users/store'
}
}
Run Code Online (Sandbox Code Playgroud)
根据您的喜好,最好使用您需要的东西.我个人不喜欢隐式控制器,因为它们可能很乱,不提供名称,使用时会让人感到困惑php artisan routes.我通常将RESTful资源控制器与显式路由结合使用.
| 归档时间: |
|
| 查看次数: |
136781 次 |
| 最近记录: |