Articles

Laravel: introducció a l'encaminament de laravel

L'encaminament a Laravel permet als usuaris dirigir totes les sol·licituds d'aplicació al controlador adequat. La majoria de les rutes principals de Laravel reconeixen i accepten un identificador d'actiu uniforme juntament amb un tancament, proporcionant una manera senzilla i expressiva d'enrutament.

Què és una ruta (ruta)?

El camí és una manera de crear un URL de sol·licitud per a la vostra aplicació. Aquests URL no han d'estar associats a fitxers específics d'un lloc web i són llegibles pels humans i són compatibles amb el SEO.

A Laravel, els camins es creen dins de la carpeta del fitxer routes. Es creen al fitxer web.php per a llocs web i dins api.php per a les API.

aquests route estan assignats al grup middleware xarxa, destacant l'estat de la sessió i la seguretat CSRF. Les rutes a route/api.php són sense estat i estan assignats al grup de programari intermedi de l'API.
La preinstal·laciódefiLaravel nita inclou dos camins, un per a la web i un altre per a l'API. Així és el camí per a la web web.php:

Route::get('/', function () {
   return view('welcome');
});

Quina és una ruta a Laravel?

Tots els camins de Laravel ho són definiti als fitxers de ruta situats dins del directori routes. L'aplicació de gestió de rutes, defiacabat a l'expedient App\Providers\RouteServiceProvider, s'encarrega d'alinear automàticament aquests fitxers. L'arxiu route/web.php defiacaba els camins de la vostra interfície web.

És possible defiacabeu un camí per a aquesta acció del controlador de la manera següent:

Route::get(‘user/{id}’, ‘UserController@show’);

Route::resource: el mètode Route::resource produeix totes les rutes bàsiques necessàries per a una aplicació i es gestiona mitjançant la classe de controlador.

Quan una sol·licitud coincideix amb l'URI de ruta especificat, s'invoca el mètode show defiacabat al controlador App\Http\ControllersUserController, passant els paràmetres de ruta al mètode.

Per obtenir recursos, heu de fer dues coses a l'aplicació laravel. Primer, heu de crear una ruta de recursos laravel que proporciona inserir, actualitzar, visualitzar i suprimir camins. En segon lloc, creeu un controlador de recursos que proporcioni un mètode per inserir, actualitzar, visualitzar i suprimir.

La preinstal·laciódefiLaravel nita ve amb dos camins: un per a la web i un altre per a l'API. Aquí teniu l'aspecte de la ruta al web a web.php:

Route::get(‘/’, function () {

return view(‘welcome’);

});

Laravel Middleware actua com a pont entre la petició i la reacció. Pot ser algun tipus de component de filtre.

laravel treballar amb a middleware que té la tasca de confirmar si l'aplicació client està verificada o no. En cas que es confirmi el client, l'encaminament es redirigeix ​​a la pàgina d'inici o a una pàgina d'inici de sessió.

Els mètodes per al route

El codi anterior defiacaba un camí a la pàgina d'inici. Sempre que aquest camí rebi una sol·licitud get /, tornarà el view welcome

Tots els camins de Laravel ho són definiti en el teu routing, que es troben dins del directori dei routes. Conseqüentment, l'AppProvidersRouteServiceProvider de l'aplicació alinea aquests registres. L'arxiu route/web.php conté les rutes que es gestionen per a la vostra interfície web.

L'estructura del camí és molt senzilla. Obriu el fitxer adequat (`web.phpo `api.php) i inicieu la línia de codi amb `Route:: `, seguit de la sol·licitud que voleu assignar a aquesta ruta específica i, a continuació, especifiqueu la funció que es realitzarà després de la sol·licitud.

Laravel ofereix els següents mètodes de ruta:

  • get
  • post
  • put
  • delete
  • patch
  • options

Els camins són definitat a Laravel dins de la classe Route amb HTTP, la ruta per respondre i el tancament, o el controlador.

Com crear camins a Laravel

Vegem com podeu crear els vostres propis camins a Laravel.

Una ruta GET bàsica

Ara crearé un camí bàsic que imprimirà la taula de temps de 2.

Route::get('/table', function () {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * 2 = ". $i*2 ."<br>";
   }   
});

Al codi anterior, vaig crear una ruta de sol·licitud GET per a l'URL /table, que imprimirà la taula de temps de 2 a la pantalla.

Ara vegem el mateix codi, parametritzant el nombre per al qual volem la taula de multiplicar:

Route::get('/table/{number}', function ($number) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

Al codi el 'number' entre claus representa el paràmetre, és a dir, el nombre pel qual es calcularà la taula de multiplicar. Sempre que s'especifiqui un URL del tipus /table/n, llavors s'imprimirà la taula numèrica n.

També hi ha la manera de combinar ambdues funcions en un sol camí. Laravel ofereix la funció de paràmetres opcionals que us permet afegir paràmetres opcionals mitjançant el signe d'interrogació '?' després del paràmetre opcional i del valor predefinit. Vegem l'exemple:

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

Al codi anterior hem creat el nostre paràmetre de ruta, fent que el número sigui opcional, de manera que si un usuari encamina `/table` llavors generarà la taula de 2 per defectedefinit i si un usuari s'adreça a `/table/{number}Després la taula de números 'number' es produirà.

Expressions regulars com a restriccions per als paràmetres de ruta

A l'exemple anterior vam crear una ruta per generar la taula de multiplicar, però com podem assegurar-nos que el paràmetre de la ruta és realment un nombre, per evitar errors en generar la taula de multiplicar?

A Laravel, pots defiacabeu una restricció al paràmetre de ruta mitjançant el mètode `where` a la instància de la ruta. El `where` pren el nom del paràmetre i una expressió regular per a aquest paràmetre.

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

Ara vegem un exemple d'una restricció per al nostre paràmetre `{numero}` per assegurar-se que només es passa un número a la funció.

Route:: get ( '/table/{numero?}' , funzione ( $numero = 2 ) {    
   for( $i = 1 ; $i < = 10 ; $i + + ) {   
       echo "$i * $numero = " . $i * $numero . "<br>" ; 
   }   
} )->where( 'numero' , '[0-9]+' ) ;

Al codi anterior, hem utilitzat una expressió regular per al número de camí. Ara, si un usuari intenta dirigir-se a /taula/núm es mostrarà una excepció NotFoundHttpException.

Laravel Routing amb funció de control

A Laravel, pots defiacabar un mètode del controlador per a un camí. Un mètode de controlador realitza totes les accions definit cada vegada que un usuari accedeix a la ruta.
Amb el codi següent estem assignant el mètode del controlador 'functionname' a una ruta:

Route:: get ( '/home' , 'YourController@functionname' ) ;

El codi comença amb `Route::` i per tant defiacaba el mètode de sol·licitud per al camí. Posteriorment, defiAcabeu el camí i el controlador juntament amb el mètode afegint el símbol @ abans del nom del mètode.

Posa un nom al camí

A Laravel, pots defiacaba un nom per al teu camí. Aquest nom sovint és molt útil. Per exemple, si voleu redirigir un usuari d'una ubicació a una altra, no cal que ho feu defiacabeu l'URL de redirecció complet. Només pots donar el seu nom. Tu pots defiacabeu el nom de la ruta amb el mètode `name` a la instància de ruta.

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
})->where('number', '[0-9]+')->name(‘table’);

Ara, podria regenerar l'URL d'aquest camí, mitjançant el codi següent:

$url = route('table');

De la mateixa manera, per a la redirecció a aquest URL, la sintaxi correcta seria:

return redirect()->route('table');

Route Groups

I Route Groups, literalment grups de camins, és una característica essencial de Laravel, que us permet agrupar camins. Els grups de camins són útils quan voleu aplicar atributs a tots els camins agrupats. Si utilitzeu grups de camins, no cal que apliqueu els atributs individualment a cada camí; això evita la duplicació. Et permet compartir atributs com middleware o namespaces, sense defiacabar aquests atributs en cada camí individual. Aquests atributs compartits es poden passar en un format de matriu com a primer paràmetre al mètode Route::group.

Sintaxi d'un grup de rutes

Route::group([], callback);  

colom []: és una matriu passat al mètode del grup com a primer paràmetre.

Exemple de Route Group en web.php

Route::group([], function()  
{  
   Route::get('/first' , function()  
   {  
      echo "first way route" ;   
   });  
   Route::get('/second' , function()  
   {  
      echo "second way route" ;   
   });  
   Route::get('/third' , function()  
   {  
      echo "third way route" ;   
   });  
});  

En el codi, defianem a trobar el mètode grup (), que conté els dos paràmetres, és a dir array e closure. Dins el closure, Podem defiacabar quants route volem. En el codi anterior, tenim defiacabat tres route.

Si a través del navegador accedim a l'URL localhost/myproject/first després intervé el primer route escrivint al navegador first way route.

Amb l'URL localhost/myproject/second després ve el segon route escrivint al navegador second way route.

Mentre que amb l'URL localhost/myproject/third després ve la tercera route escrivint al navegador third way route.

Prefixos de Route Groups

Els prefixos de route s'utilitzen quan volem proporcionar una estructura d'URL comuna a múltiples route.

Podem especificar el prefix per a tots els camins definits dins del grup utilitzant l'opció de matriu de prefixos a Route Groups.

Exemple de web.php

Route::group(['prefix' => 'movie'], function()  
{  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
});  

El codi conté tres camins als quals es pot accedir des dels URL següents:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

Middleware

També podem assignar middleware a totes les rutes d'un grup. El middleware ha de ser defiacabat abans de crear el grup. Per veure com fer-ho, llegiu el nostre article Laravel middleware com funciona.

Exemple:

Route::middleware(['age'])->group( function()  
{  
  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
  
});  

Prefixos del nom del camí

El mètode name s'utilitza per prefixar cada nom de route amb una cadena especificada. En el mètode name, hem d'especificar la cadena amb un caràcter final al prefix.

exemple web.php

Route::name('movie.')->group(function()  
{  
   Route::get('users', function()  
   {  
      return "movie.films";  
   })->name('films');  
});  

Ercole Palmeri

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

Articles recents

Intervenció innovadora en Realitat Augmentada, amb un visor Apple al Policlínic de Catània

Es va realitzar una operació d'oftalmoplàstia amb el visualitzador comercial Apple Vision Pro a la Policlínica de Catània...

3 maig 2024

Els avantatges de les pàgines per pintar per a nens: un món de màgia per a totes les edats

El desenvolupament de la motricitat fina a través del color prepara els nens per a habilitats més complexes com escriure. Per acolorir...

2 maig 2024

El futur és aquí: com la indústria naviliera està revolucionant l'economia global

El sector naval és una veritable potència econòmica mundial, que ha navegat cap a un mercat de 150 milions...

1 maig 2024

Els editors i OpenAI signen acords per regular el flux d'informació processada per la Intel·ligència Artificial

Dilluns passat, el Financial Times va anunciar un acord amb OpenAI. FT autoritza el seu periodisme de classe mundial...

30 2024 abril