RESTful资源控制器
一个RESTful的资源控制器为您设置,甚至名称他们一些缺省路由。
Route::resource('users', 'UsersController');
为您提供以下命名路线:
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
然后您将像这样设置控制器(动作=方法)
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
您还可以选择包含或排除哪些操作,如下所示:
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
RESTful资源控制器文档
隐式控制器
的隐式控制器是更灵活的。您将基于HTTP请求类型和名称被路由到控制器方法。但是,您没有为您定义路线名称,它将捕获同一路线的所有子文件夹。
Route::controller('users', 'UserController');
会导致您使用一种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'
}
}
隐式控制器文档
优良作法是根据自己的喜好使用所需的内容。我个人不喜欢Implicit控制器,因为它们可能很杂乱,不提供名称,并且在使用时会造成混淆php artisan routes
。我通常将RESTful资源控制器与显式路由结合使用。