Контроллер ресурсов 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 Resource Controller
Неявный контроллер
Неявный контроллер является более гибким. Вы перенаправлены на методы вашего контроллера на основе типа и имени 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'
}
}
Документация неявного контроллера
Хорошей практикой является использование того, что вам нужно, согласно вашим предпочтениям. Лично мне не нравятся неявные контроллеры , потому что они могут быть грязными, не дают имен и могут сбивать с толку при использовании php artisan routes
. Обычно я использую контроллеры RESTful Resource в сочетании с явными маршрутами.