Es bastante sencilo definir rutas en Laravel 11. En Laravel 11 las rutas se definen dentro del fichero web.php dentro de la carpeta routes de la siguiente manera:
Route::get('/', function () {
return view('welcome');
});
Donde la barra es la uri de la ruta y el return view devuelve la plantilla que tiene contenido. Otro ejemplo sería:
Route::get('/contacto', function () {
return view('contacto');
});
La ruta seria https://dominio.xx/contacto y cargaría la plantilla con todo lo referente al contacto.
Laravel va a verificar el tipo de petición:
- GET:
Route::get('/contacto', function () {
return view('contacto');
});
- POST:
Route::post('/alta-usuario', function () {
return view('altaUsuario');
});
- PUT:
Route::put('/alta-usuario', function () {
return view('altaUsuario');
});
- PATch:
Route::patch('/alta-usuario', function () {
return view('altaUsuario');
});
- DELETE:
Route::delete('/borrar-usuario', function () {
return view('borrarUsuario');
});
Ojo para cualquier llamada que no sea get tiene que ahcerse meidante la petición que espera Laravel, sino va a dar error.
Para pasar parámetros a la siguiente ruta se hace:
Route::get('/producto/{idProducto}', function ($idProducto) {
return 'Producto:'.$idProducto
});
Como podéis ver el después de la uri esta definido "
{idProducto}" y a la función se le pasa el parámetro "$idProducto", con eso bastaría, pero ojo tienen que coincidir en el nombre.
Se pueden pasar parámetros opcionales que se hace de la siguiente manera
Route::get('/producto/{idProducto}/{categoria?}', function ($idProducto,$categoria=null) {
return 'Producto:'.$idProducto
});
En el ejemplo anterior el parámetro "categoria" tiene el "?" y en el pará,metro dela función tiene asignado un valor por defecto "null". Con eso bastaría para crear parámetros variables.
Esmuy importante el orden de las rutas en Laravel:
Route::get('/producto/{idProducto}', function ($idProducto) {
return 'Producto:'.$idProducto
});
Route::get('/producto/create', function ($idProducto) {
return 'crear';
});
En el ejemplo anterior hay dos rutas, una con parámetro variable y otra con uri normal. Pero según están definidas si yo pongo en el navegador " https://dominio.xx/producto/create" devolverá "Producto create", porque el patrón coincide con la url, para que salga la páginma definida en "/producto/create" las rutas tendrían que estar definidas así:
Route::get('/producto/create', function ($idProducto) {
return 'crear';
});
Route::get('/producto/{idProducto}', function ($idProducto) {
return 'Producto:'.$idProducto
});
Esto han sido ejemplos sencillos pero lo suyo es usar controladores y para crear rutas que llamen a controladores se hace de la siguiente manera. Vamos a suponer que los controladores ya están definidos:
use App\Http\Controllers\ContactoController;
Route::get('/contacto', [ContactoController::class,'index']);
En el ejemplo anterior primero se referencia al controlador con el use y su ruta y luego, en vez de usar una función callback se pone en un array el nombre del controlador y el método que se va a usar. Para el tema de los parámetos se hace de la siguiente manera:
use App\Http\Controllers\ProductoController;
Route::get('/producto/{idProducto}', [ProductoController::class,'index']);
Por ahora es normal, solo que el parámetro hay que ponérselo en el método del controlador al que referencia la ruta: "public function index($idProducto)" (esto sería en el controlador ProductoController)
Compartir en twitter