RESTful Resource Controller
Ein RESTful-Ressourcencontroller richtet einige Standardrouten für Sie ein und benennt sie sogar.
Route::resource('users', 'UsersController');
Gibt Ihnen diese benannten Routen:
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
Und Sie würden Ihren Controller so einrichten (Aktionen = Methoden)
class UsersController extends BaseController {
public function index() {}
public function show($id) {}
public function store() {}
}
Sie können auch auswählen, welche Aktionen wie folgt eingeschlossen oder ausgeschlossen werden sollen:
Route::resource('users', 'UsersController', [
'only' => ['index', 'show']
]);
Route::resource('monkeys', 'MonkeysController', [
'except' => ['edit', 'create']
]);
RESTful Resource Controller-Dokumentation
Impliziter Controller
Ein impliziter Controller ist flexibler. Sie werden basierend auf dem HTTP-Anforderungstyp und -Namen an Ihre Controller-Methoden weitergeleitet. Sie haben jedoch keine Routennamen für Sie definiert und es werden alle Unterordner für dieselbe Route abgefangen.
Route::controller('users', 'UserController');
Würde Sie dazu bringen, den Controller mit einer Art RESTful-Namensschema einzurichten:
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'
}
}
Implizite Controller-Dokumentation
Es ist empfehlenswert, das zu verwenden, was Sie benötigen. Ich persönlich mag die impliziten Controller nicht , weil sie chaotisch sein können, keine Namen angeben und bei der Verwendung verwirrend sein können php artisan routes
. Normalerweise verwende ich RESTful Resource Controller in Kombination mit expliziten Routen.