Controlador de Recurso RESTful
Um controlador de recurso RESTful configura algumas rotas padrão para você e até os nomeia.
Route::resource('users', 'UsersController');
Fornece as seguintes rotas nomeadas:
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
E você configuraria seu controlador mais ou menos assim (actions = methods)
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
Você também pode escolher quais ações são incluídas ou excluídas da seguinte maneira:
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
Documentação do RESTful Resource Controller
Controlador implícito
Um controlador implícito é mais flexível. Você é roteado para os métodos do seu controlador com base no tipo e no nome da solicitação HTTP. No entanto, você não tem nomes de rotas definidos para você e ela captura todas as subpastas para a mesma rota.
Route::controller('users', 'UserController');
O levaria a configurar o controlador com um tipo de esquema de nomeação 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'
}
}
Documentação implícita do controlador
É uma boa prática usar o que você precisa, conforme sua preferência. Pessoalmente, não gosto dos controladores implícitos , porque eles podem ser confusos, não fornecem nomes e podem ser confusos ao usar php artisan routes
. Normalmente, uso controladores RESTful Resource em combinação com rotas explícitas.