--- 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;}); ```