Artikler

Laravel: introduktion til laravel routing

Routing i Laravel giver brugerne mulighed for at dirigere alle applikationsanmodninger til den relevante controller. De fleste primære ruter i Laravel genkender og accepterer en Uniform Asset Identifier sammen med en lukning, hvilket giver en enkel og udtryksfuld måde at dirigere på.

Hvad er en rute (rute)?

Stien er en måde at oprette en anmodnings-URL til din applikation. Disse URL'er behøver ikke at være knyttet til specifikke filer på en hjemmeside og er læselige og SEO-venlige.

I Laravel oprettes stier inde i le-mappen routes. De oprettes i filen web.php til hjemmesider og indenfor api.php til API'er.

Disse route er tildelt gruppen middleware netværk, der fremhæver sessionsstatus og sikkerhed CSRF. Ruterne i route/api.php de er statsløse og er tildelt API-middleware-gruppen.
ForinstallationendefiLaravel nita kommer med to stier, en til internettet og en til API. Sådan ser vejen til web ind web.php:

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

Hvad er en rute i Laravel?

Alle Laravel stier er definiti i stifilerne i mappen routes. Rutestyringsapplikationen, defiafsluttet i filen App\Providers\RouteServiceProvider, sørger for automatisk at opstille disse filer. Filen route/web.php defiafslutter stierne til din webgrænseflade.

È mulig definish en sti til denne controllerhandling som følger:

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

Route::resource: metoden Route::resource producerer alle de grundlæggende stier, der kræves til en applikation og styres gennem controllerklassen.

Når en anmodning matcher den angivne rute-URI, påkaldes metoden show defifærdig i controlleren App\Http\ControllersUserController, der overfører ruteparametrene til metoden.

For ressourcer skal du gøre to ting på applikationen Laravel. Først skal du oprette en ressourcesti på Laravel der giver indsætte, opdatere, se og slette stier. For det andet skal du oprette en ressourcecontroller, der giver en metode til indsættelse, opdatering, visning og sletning.

ForinstallationendefiLaravel nita kommer med to stier: en til internettet og en til API. Sådan ser ruten til nettet ud i web.php:

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

return view(‘welcome’);

});

Laravel mellemvare fungerer som en bro mellem anmodningen og reaktionen. Det kan være en slags filterkomponent.

Laravel arbejde med en middleware som har til opgave at bekræfte, om klientapplikationen er verificeret eller ej. Hvis klienten er bekræftet, omdirigeres routing til startsiden eller en login-side.

Metoderne til route

Den forrige kode defifører en vej til hjemmesiden. Hver gang denne rute modtager en anmodning get per /, vil returnere view welcome

Alle Laravel stier er definiti i din routing, som er placeret inde i biblioteket dei routes. Følgelig, l'AppProvidersRouteServiceProvider af ansøgningen opstiller disse registreringer. Filen route/web.php indeholder de ruter, der administreres til din webgrænseflade.

Stistrukturen er meget enkel. Åbn den relevante fil (`web.phpo `api.php) og start kodelinjen med `Route:: `, efterfulgt af den anmodning, du vil tildele til den specifikke rute, og angiv derefter den funktion, der skal udføres efter anmodningen.

Laravel tilbyder følgende stimetoder:

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

Stierne er definoteret i Laravel inden for ruteklassen med HTTP, ruten til at svare på og lukke eller controlleren.

Sådan opretter du stier i Laravel

Lad os se, hvordan du kan skabe dine egne stier i Laravel.

En grundlæggende GET-sti

Nu vil jeg oprette en grundlæggende sti, der vil udskrive tidstabellen for 2.

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

I ovenstående kode oprettede jeg en GET-anmodningssti til URL'en /table, som vil udskrive tidstabellen for 2 på skærmen.

Lad os nu se den samme kode, der parametrerer det tal, som vi vil have multiplikationstabellen for:

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

I koden 'number' mellem klammerne repræsenterer parameteren, dvs. det tal, som multiplikationstabellen vil blive beregnet for. Når en URL af typen er angivet /table/n, så udskrives taltabellen n.

Der er også en måde at kombinere begge funktioner på én vej. Laravel tilbyder den valgfrie parameterfunktion, som giver dig mulighed for at tilføje valgfrie parametre ved hjælp af spørgsmålstegnet '?' efter den valgfrie parameter og præværdiendefiaften. Lad os se eksemplet:

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

I koden ovenfor oprettede vi vores ruteparameter, hvilket gør tallet valgfrit, så hvis en bruger ruter `/table` så vil den generere tabellen med 2 som standarddefinite og hvis en bruger ruter til `/table/{number}Derefter taltabellen 'number' vil blive produceret.

Regulære udtryk som begrænsninger for ruteparametre

I det foregående eksempel lavede vi en sti til generering af multiplikationstabellen, men hvordan kan vi sikre, at parameteren for stien faktisk er et tal, for at undgå fejl ved generering af multiplikationstabellen?

I Laravel kan du definish en begrænsning på ruteparameteren ved at bruge ` metodenwhere` på ruteforekomsten. Den `where` tager parameternavnet og et regulært udtryk for den parameter.

Nyhedsbrev om innovation
Gå ikke glip af de vigtigste nyheder om innovation. Tilmeld dig for at modtage dem via e-mail.

Lad os nu se et eksempel på en begrænsning for vores ` parameter{numero}` for at sikre, at kun et tal sendes til funktionen.

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

I ovenstående kode brugte vi et regulært udtryk for stinummeret. Nu, hvis en bruger forsøger at rute til /tabel/nr vil blive vist en NotFoundHttpException undtagelse.

Laravel Routing med kontrolfunktion

I Laravel kan du definish en Controller-metode til en sti. En controller-metode udfører alle handlinger definat hver gang en bruger tilgår ruten.
Med følgende kode tildeler vi controller-metoden 'functionname' til en rute:

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

Koden starter med `Route::` og derfor defiafslutter anmodningsmetoden for stien. Efterfølgende defiAfslut din sti og controller sammen med metoden ved at tilføje @-symbolet før metodenavnet.

Giv stien et navn

I Laravel kan du definish et navn til din vej. Dette navn er ofte meget nyttigt. Hvis du f.eks. vil omdirigere en bruger fra et sted til et andet, behøver du ikke defiafslutte den fulde omdirigerings-URL. Du kan bare give hans navn. Du kan defiafslut rutenavnet ved at bruge `-metodenname` i ruteforekomsten.

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’);

Nu kunne jeg genskabe url'en til denne sti gennem følgende kode:

$url = route('table');

Tilsvarende, for omdirigering til denne URL, ville den korrekte syntaks være:

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

Route Groups

I Route Groups, bogstaveligt talt stigrupper, er en væsentlig funktion i Laravel, som giver dig mulighed for at gruppere stier. Stigrupper er nyttige, når du vil anvende attributter på alle grupperede stier. Hvis du bruger stigrupper, behøver du ikke at anvende attributterne individuelt på hver sti; dette undgår dobbeltarbejde. Det giver dig mulighed for at dele attributter som middleware o namespaces, uden defifærdiggør disse attributter på hver enkelt vej. Disse delte attributter kan overføres i et array-format som den første parameter til metoden Route::group.

Syntaks for en rutegruppe

Route::group([], callback);  

due []: er et array, der sendes til gruppemetoden som den første parameter.

Eksempel på Route Group nel 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" ;   
   });  
});  

I koden, defilad os finde metoden gruppe(), som indeholder de to parametre, dvs array e closure. Inde i closure, vi kan defiafslutte hvor mange route vi vil have. I ovenstående kode har vi defifærdig med tre route.

Hvis vi får adgang til URL'en via browseren localhost/myproject/first så griber den første ind route skrive i browseren first way route.

Med URL'en localhost/myproject/second så kommer det andet route skrive i browseren second way route.

Mens med URL'en localhost/myproject/third så kommer den tredje route skrive i browseren third way route.

Præfikser af Route Groups

Præfikserne af route de bruges, når vi ønsker at give en URL-struktur, der er fælles for flere route.

Vi kan angive præfikset for alle stier definites inden for gruppen ved hjælp af præfiks-array-indstillingen i Route Groups.

Eksempel på 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";  
   });  
});  

Koden indeholder tre stier, der kan tilgås fra følgende URL'er:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

middleware

Vi kan også tildele middleware til alle ruter inden for en gruppe. Mellemvaren skal være defifærdig før oprettelse af gruppen. For at se, hvordan du gør dette, læs vores artikel Laravel middleware, hvordan det virker.

esempio:

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

Stinavnspræfikser

Metoden name bruges til at præfikse hvert navn på route med en specificeret streng. I metoden name, skal vi angive strengen med et efterfølgende tegn i præfikset.

eksempel web.php

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

Ercole Palmeri

Nyhedsbrev om innovation
Gå ikke glip af de vigtigste nyheder om innovation. Tilmeld dig for at modtage dem via e-mail.

Seneste artikler

Veeam har den mest omfattende support til ransomware, fra beskyttelse til respons og gendannelse

Coveware by Veeam vil fortsætte med at levere responstjenester til cyberafpresning. Coveware vil tilbyde kriminaltekniske og afhjælpende funktioner...

23 April 2024

Grøn og digital revolution: Hvordan prædiktiv vedligeholdelse transformerer olie- og gasindustrien

Forudsigende vedligeholdelse revolutionerer olie- og gassektoren med en innovativ og proaktiv tilgang til anlægsstyring...

22 April 2024

Britisk antitrust-tilsynsmyndighed rejser BigTech-alarm over GenAI

Det britiske CMA har udsendt en advarsel om Big Techs adfærd på markedet for kunstig intelligens. Der…

18 April 2024

Casa Green: energirevolution for en bæredygtig fremtid i Italien

Dekretet om "grønne huse", der er formuleret af Den Europæiske Union for at øge bygningers energieffektivitet, har afsluttet sin lovgivningsproces med...

18 April 2024