In this short post, we will go over on How to create a resourceful controller in Laravel and also how to define a single line resource route in the web.php file.
Resource Controller
With Laravel, we get the option to create a CRUD controller, which has blank methods for all the default CRUD operations (Create, Read, Update, Delete) by just executing a single artisan command.
php artisan make:controller productController --resource
This artisan command will create a new controller with the name productController which has all the default CRUD methods.
If you are looking to create a resource controller when generating the Model file. Use this command.
php artisan make:model product -r
This artisan command will create a model
Product.php, and a resource controller
productController.php.
Resource Route
Here is how you can define the resource route in the
web.php file
Route::resource('products', 'ProductController');
This code line works like magic, it will automatically assign many action verbs to the resource controller. Since we generated a resource controller, this line will internally map route names to a different controller actions.
| Verb |
URI |
action (Controller method) |
Route Name |
| GET |
/products |
index |
products.index |
| GET |
/products/create |
create |
products.create |
| POST |
/products |
store |
products.store |
| GET |
/products/{product} |
show |
products.show |
| GET |
/products/{product}/edit |
edit |
tasks.edit |
| PUT/PATCH |
/products/{product} |
update |
products.update |
| DELETE |
/products/{product} |
destroy |
products.destroy |