Contrôleur de ressources RESTful
Un contrôleur de ressources RESTful configure pour vous des routes par défaut et les nomme même.
Route::resource('users', 'UsersController');
Vous donne ces itinéraires nommés:
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
Et vous configureriez votre contrôleur quelque chose comme ceci (actions = méthodes)
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
Vous pouvez également choisir les actions incluses ou exclues comme ceci:
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
Documentation du contrôleur de ressources RESTful
Contrôleur implicite
Un contrôleur implicite est plus flexible. Vous êtes dirigé vers vos méthodes de contrôleur en fonction du type et du nom de la requête HTTP. Cependant, vous n'avez pas défini de noms d'itinéraire pour vous et il capturera tous les sous-dossiers pour le même itinéraire.
Route::controller('users', 'UserController');
Vous conduirait à configurer le contrôleur avec une sorte de schéma de dénomination 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'
}
}
Documentation du contrôleur implicite
Il est recommandé d'utiliser ce dont vous avez besoin, selon vos préférences. Personnellement, je n'aime pas les contrôleurs implicites , car ils peuvent être compliqués, ne fournissent pas de noms et peuvent être déroutants lors de l'utilisation php artisan routes
. J'utilise généralement des contrôleurs de ressources RESTful en combinaison avec des routes explicites.