Laravel y sus Controladores

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


Publicado

en

por

Etiquetas:

Comentarios

Deja una respuesta

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