Rutas
- https://laravel.com/docs/5.3/routing
- https://laravel.com/docs/5.3/controllers#resource-controllers
En nuestro framewor "casero", un controlador era responsable de una tarea concreta, o conjunto de tareas relacionadas entre sí (CRUD sobre una tabla, por ejemplo).
Para nosotros el path o ruta de nuestra url representaba /controlador/metodo/arg1/arg2/argN. Vamos a ver coomo realizar esto con Laravel.
En Laravel el archivo /public/index.php es nuestra entrada al frontend controller pero el fichero .htaccess es distinto. La ruta es tomada de $_SERVER['REQUEST_URI'].
Vamos a la documentación oficial: https://laravel.com/docs/5.3/routing
- Podemos considerar ejemplos como:
Route::get('user', function () {
return 'hola mundo. Estamos en user';
});
//prueba esta ruta creando un formulario.
Route::post('user', function () {
return 'hola mundo. Estamos en user, por el método POST';
});
//podemos usar parámetros
Route::get('user/{id}', function ($id) {
return 'Preguntando por user' . $id;
});
//podemos usar parámetros opcionales
Route::get('book/{id?}', function ($id = "desconocido") {
return 'Preguntando por el libro ' . $id;
});
Route::get('user/delete/{id}', function ($id) {
return 'Baja de usuario, argumento id:' . $id;
});
//Podemos filtrar los argumentos con expresiones regulares
Route::get('user/{name}', function ($name) {
// name debe ser texto
}) ->where('name', '[A-Za-z]+');
Route::get('user/{id}', function ($id) {
// id debe ser un nº. natural
}) ->where('id', '[0-9]+')
- Podemos revisar la lista de rutas mediante
artisan route:list
Rutas resource: REST
- Si definimos rutas de tipo resource se mapearán las 7 acciones básicas asociadas a un recurso según 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: https://laravel.com/docs/5.3/controllers#resource-controllers
- Definición de una ruta
Route::resource('photos', 'PhotoController');
Creación de un controlador resource:
php artisan make:controller PhotoController --resource
Mapeo de rutas y métodos:
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