Controlador de Recurso (Resource Controller)

Con Laravel crear un controlador que tenga todos los métodos necesarios para un CRUD es muy simple, gracias a la consola interactiva se puede crear con este simple comando:

php artisan make:controller UserController --resource

Además de crear un controlador para un CRUD, se puede asociar el controlador a un modelo añadiendo la opción model al comando anterior de esta forma:

php artisan make:controller UserController --resource --model=User

En Laravel 10, para crear una ruta resource que gestione un recurso de manera estándar (con los métodos típicos: index, create, store, show, edit, update y destroy), puedes definirlo en el archivo de rutas (routes/web.php o routes/api.php) de la siguiente manera:

use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);

Esto generará automáticamente las siguientes rutas:

Método HTTPURIAcciónMétodo del controlador
GET/postsindexPostController@index
GET/posts/createcreatePostController@create
POST/postsstorePostController@store
GET/posts/{post}showPostController@show
GET/posts/{post}/editeditPostController@edit
PUT/PATCH/posts/{post}updatePostController@update
DELETE/posts/{post}destroyPostController@destroy

Personalizar rutas específicas

// Solo las rutas index y show
Route::resource('posts', PostController::class)->only(['index', 'show']);

// Todas las rutas excepto destroy
Route::resource('posts', PostController::class)->except(['destroy']);

Controlador para API

Si estás construyendo una API y deseas generar rápidamente un controlador de recursos que no incluya los métodos de create y edit, utiliza la opción –api del comando make:controller

php artisan make:controller Api/UserController --api

Para hacer referencia a este controlador desde las rutas puedes llamar al método apiResource, este método cumple la misma función que el método resource que vimos anteriormente pero excluye los métodos create y edit.

Nota: Verificar si funciona para Laravel 10 en adelante.

Route::apiResource('users', 'UserController');

Si tienes otros controladores para recursos tipo API puedes utilizar el mismo método para añadir varios pasando un arreglo como argumento de esta forma

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *