Ultima Laravel
Share
Explore
Enrutamiento

icon picker
Routes y Controller

Rutas y controladores

Las rutas anónimas son útiles para pequeñas tareas y pruebas.
Pero un trabajo serio necesita el uso de controladores (MVC)
use App\Http\Controllers\UserController;

//ruta prueba gestionada por el método "index" de PruebaController

Route::get('/photos', [PhotosController::class, 'index']);

Rutas resource: REST

Un CRUD necesita definir 7 rutas para 7 acciones.
Lectura: ruta de listado y de detalle
Creación: mostrar formulario de alta y procesarlo
Update: mostrar formulario de edición y procesarlo
Borrado
Route::get('photos/create', 'Photos\AdminController@create');
Route::post('photos', 'Photos\AdminController@store');
Route::get('photos', 'Photos\AdminController@index');
Route::get('photos/{id}', 'Photos\AdminController@show');
Route::get('photos/{id}/edit', 'Photos\AdminController@edit');
Route::put('photos/{id}', 'Photos\AdminController@update');
Route::delete('photos/{id}', 'Photos\AdminController@destroy');
Si definimos rutas de tipo resource se mapearán estas 7 rutas.
En la medida de lo posible estas rutas siguen el paradigma REST.
Son las acciones necesarias para un CRUD completo y usando los distintos verbos HTTP: get, post, put y delete.
Para ver como gestionar estas rutas y este tipo de controladores:
Definición de una ruta
Route::resource('photos', 'PhotoController');
Creación de un controlador resource:
php artisan make:controller PhotoController --resource
Lista de rutas:
Verb URI Action Route Name
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

Agrupación de Rutas en Laravel: 6 técnicas para organizar las rutas

Nuevo en Laravel 9: Route::controller()

Si tienes unos cuantos métodos en el Controlador pero no siguen la estructura estándar de los Recursos, puedes seguir agrupándolos, sin repetir el nombre del Controlador para cada método.
En su lugar:
Route::get('profile', [ProfileController::class, 'getProfile']);
Route::put('profile', [ProfileController::class, 'updateProfile']);
Route::delete('profile', [ProfileController::class, 'deleteProfile']);
Puedes hacerlo:
Route::controller(ProfileController::class)->group(function() {
Route::get('profile', 'getProfile');
Route::put('profile', 'updateProfile');
Route::delete('profile', 'deleteProfile');
});
Esta funcionalidad está disponible en Laravel 9, y en las últimas versiones menores de Laravel 8.

Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.