---
title: Laravel rutes
tags: daw, Laravel, rutes, M7
---
# [Laravel: rutes](https://runebook.dev/es/docs/laravel/docs/8.x/routing)
## Enrutament bàsic.
Les rutes més senzilles de Laravel, es composen d'una URI i una clausura (funció).
```php=
Route::get('/un/recurs', function(){
return "<h1>Hola Mundo!</h1>";
});
```
### Localització.
Les rutes es desen al directori './routes/'. Quan generem una app Laravel, es creen automàticament 4 fitxers de rutes:
* api.php
* channels.php
* console.php
* web.php
### Mètodes d'enrutament disponibles:
* Route::get($uri, $closure);
* Route::post($uri, $closure);
* Route::put($uri, $closure);
* Route::patch($uri, $closure);
* Route::delete($uri, $closure);
* Route::options($uri, $closure);
A més podem utilitzar 'match' per a assignar més d'un mètode a una mateixa acció o any per acceptar qualsevol mètode disponible.
* Route::match(['get', 'post'], '/', function(){ return 'Hola';});
* Route::any('/recurs', function() {return 'Hola';});
També podem crear redireccions de les següents formes:
* Route::redirect('/recurs', '/nou_recurs');
* Route::permanentRedirect('/recurs', '/nou_recurs');
### Assignació directa d'una ruta a una vista.
Moltes vegades no necessitem cridar a cap controlador, perquè només volem assignar una vista a la nostra ruta. És per aquesta raó que existeix la següent forma de declarar rutes:
* Route::view('/hola', 'hola_v', ['param1' => 'valor_1']);
On l'array de paràmetres és opcional.
### Pas de paràmetres.
```php=
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
```
Inclús podem marcar aquests paràmetres com a opcionals amb la següent sintaxi:
```php=
Route::get('user/{id?}', function ($id=0) {
return 'User '.$id;
});
```
### Rutes amb nom.
És posible donar un nom a una ruta cridant al mètode 'name' de la ruta indicada:
```php=
Route::post('/usuari/login', function(){ return fes_login();})->name('login');
```
## Ús de paràmetres
### Paràmetres d'ús obligatori
```python=
Route::get('/item/{id}', function($id){return 'Item '.$id;});
```
Els paràmetres s'indiquen entre claus '{}' i consten exclusivament de caràcters alfanumèrics i '_'. Els paràmtres no han de coincidir amb el nom de les variables que es passen a la funció del controlador, es passen segons l'ordre de definició.
### Paràmetres opcionals
```python=
Route::get('user/{name?}', function ($name = null) {return $name;});
```