artikels

Laravel: ynlieding ta laravel-routing

Routing yn Laravel lit brûkers alle oanfragen fan applikaasjes nei de passende kontrôler routerje. De measte primêre rûtes yn Laravel werkenne en akseptearje in Uniform Asset Identifier tegearre mei in sluting, it bieden fan in ienfâldige en ekspressive manier fan routing.

Wat is in rûte (rûte)?

It paad is in manier om in fersyk-URL foar jo applikaasje te meitsjen. Dizze URL's hoege net te ferbûn te wêzen mei spesifike bestannen op in webside en binne minsklik lêsber en SEO-freonlik.

Yn Laravel wurde paden makke binnen de le map routes. Se wurde makke yn de triem web.php foar websiden, en binnen api.php foar APIs.

Dizze route wurde tawiisd oan de groep middleware netwurk, markearje sesjestatus en feiligens CSRF. De rûtes yn route/api.php se binne stateless en wurde tawiisd oan de API middleware groep.
De pre-ynstallaasjedefiLaravel nita komt mei twa paden, ien foar it web en ien foar de API. Dit is hoe't it paad foar web yn sjocht web.php:

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

Wat is in rûte yn Laravel?

Alle Laravel paden binne definiti yn 'e paadbestannen yn' e map routes. De applikaasje foar rûtebehear, definised yn de triem App\Providers\RouteServiceProvider, soarget foar it automatysk linen fan dizze bestannen. It dokumint route/web.php definishes de paden foar jo web ynterface.

It is mooglik definish in paad foar dizze controller aksje as folget:

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

Route::resource: de metoade Route::resource produsearret alle basis paden nedich foar in applikaasje en wurdt beheard fia de controller klasse.

As in fersyk oerienkomt mei de oantsjutte rûte URI, wurdt de metoade oproppen show defiklear yn de controller App\Http\ControllersUserController, trochjaan fan de rûte parameters oan de metoade.

Foar boarnen moatte jo twa dingen dwaan op 'e applikaasje Laravel. Earst moatte jo in boarnepaad oanmeitsje Laravel dat jout paden ynfoegje, update, besjen en wiskje. Twad, meitsje in boarne-controller dy't in metoade leveret foar it ynfoegje, bywurkje, besjen en wiskjen.

De pre-ynstallaasjedefiLaravel nita komt mei twa paden: ien foar it web en ien foar de API. Hjir is hoe't de rûte nei it web derút sjocht yn web.php:

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

return view(‘welcome’);

});

Laravel Middleware fungearret as brêge tusken it fersyk en de reaksje. It kin in soarte fan filterkomponint wêze.

Laravel wurkje mei a middleware dy't de taak hat om te befêstigjen oft de kliïntapplikaasje is ferifiearre of net. Yn it gefal dat de klant is befêstige, dan routing trochferwizings nei de thússide of in oanmeldside.

De metoaden foar de route

De foarige koade definishes in paad nei de thússide. Wannear't dizze rûte in fersyk krijt get mei /, sil weromkomme de view welcome

Alle Laravel paden binne definit yn dyn routing, dy't lizze binnen de triemtafel dei routes. Dêrtroch, l'AppProvidersRouteServiceProvider fan 'e applikaasje linet dizze records op. It dokumint route/web.php befettet de rûtes dy't wurde beheard foar jo webynterface.

De paadstruktuer is heul ienfâldich. Iepenje de passende triem (`web.phpo `api.php) en begjinne de rigel fan koade mei `Route:: `, folge troch it fersyk dat jo wolle tawize oan dy spesifike rûte en spesifisearje dan de funksje dy't sil wurde útfierd nei it fersyk.

Laravel biedt de folgjende paadmetoaden:

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

De paden binne definited yn Laravel binnen de rûteklasse mei HTTP, de rûte om te antwurdzjen en it sluten, as de controller.

Hoe kinne jo paden meitsje yn Laravel

Litte wy sjen hoe't jo jo eigen paden kinne oanmeitsje yn Laravel.

In basis GET paad

No sil ik in basispaad meitsje dat de tiidstabel fan 2 sil printsje.

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

Yn 'e boppesteande koade haw ik in GET-oanfraachpaad makke foar de URL /table, dat sil printsje de tiid tabel fan 2 op it skerm.

Litte wy no deselde koade sjen, it parameterisearjen fan it nûmer wêrfoar wy de multiplikaasjetabel wolle:

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

Yn de koade de 'number' tusken de beugels stiet foar de parameter, d.w.s. it getal wêrfoar de multiplikaasjetabel sil wurde berekkene. Wannear't in URL fan it type wurdt oantsjutte /table/n, dan wurdt de nûmertabel printe n.

D'r is ek de manier om beide funksjes yn ien paad te kombinearjen. Laravel biedt de opsjonele parameterfunksje wêrmei jo opsjonele parameters kinne tafoegje mei it fraachteken '?' nei de opsjonele parameter en de pre weardedefinite. Litte wy it foarbyld sjen:

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

Yn 'e koade hjirboppe hawwe wy ús rûteparameter makke, wêrtroch it nûmer opsjoneel is, dus as in brûker rûtes `/table` dan sil it standert de tabel fan 2 generearjedefinite en as in brûker rûtes nei `/table/{number}Dan de nûmer tabel 'number' produsearre wurde.

Reguliere útdrukkingen as beheiningen foar rûteparameters

Yn it foarige foarbyld hawwe wy in paad makke foar it generearjen fan de multiplikaasjetabel, mar hoe kinne wy ​​derfoar soargje dat de parameter fan it paad eins in nûmer is, om flaters te foarkommen by it generearjen fan de multiplikaasjetabel?

Yn Laravel kinne jo definish in beheining op 'e rûteparameter mei de metoade `where` op de rûte eksimplaar. De `where` nimt de parameternamme en in reguliere ekspresje foar dy parameter.

Ynnovaasje nijsbrief
Mis it wichtichste nijs oer ynnovaasje net. Meld jo oan om se fia e-post te ûntfangen.

Litte wy no in foarbyld sjen fan in beheining foar ús `parameter{numero}` om der wis fan te wêzen dat mar in nûmer wurdt trochjûn oan de funksje.

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

Yn 'e boppesteande koade brûkten wy in reguliere útdrukking foar it paadnûmer. No, as in brûker besiket te rûte nei /tabel/nr sil werjûn wurde in NotFoundHttpException útsûndering.

Laravel Routing mei kontrôle funksje

Yn Laravel kinne jo definish in Controller metoade foar in rûte. In kontrôlemetoade fiert alle aksjes út definite elke kear as in brûker tagong hat ta de rûte.
Mei de folgjende koade jouwe wy de kontrôlemetoade ta 'functionname' nei in rûte:

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

De koade begjint mei `Route::` en dêrom definishes de fersyk metoade foar it paad. Dêrnei, defiFinish jo paad en kontrôler tegearre mei de metoade troch it tafoegjen fan it @-symboal foar de metoadenamme.

Jou it paad in namme

Yn Laravel kinne jo definish in namme foar dyn paad. Dizze namme is faak tige brûkber. As jo ​​​​bygelyks in brûker fan de iene lokaasje nei de oare wolle omliede, hoege jo dat net definish de folsleine trochferwizing URL. Jo kinne gewoan syn namme jaan. Do kinst definish de rûtenamme mei de metoade `name` yn it rûteeksimplaar.

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

No koe ik de url foar dit paad regenerearje, fia de folgjende koade:

$url = route('table');

Lykas, foar trochferwizing nei dizze URL, soe de juste syntaksis wêze:

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

Route Groups

I Route Groups, letterlik paadgroepen, is in wêzentlike funksje yn Laravel, wêrmei jo paden groepearje kinne. Paadgroepen binne handich as jo attributen tapasse wolle op alle groepearre paden. As jo ​​brûke paad groepen, Jo hoege net in tapassing de attributen yndividueel foar elk paad; dit foarkomt duplikaasje. It lit jo attributen diele lykas middleware o namespaces,sûnder defifinish dizze attributen op elk yndividueel paad. Dizze dielde attributen kinne wurde trochjûn yn in arrayformaat as de earste parameter foar de metoade Route::group.

Syntaksis fan in rûtegroep

Route::group([], callback);  

Dove []: is in array trochjûn oan de groep metoade as de earste parameter.

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

Yn de koade, defilitte wy de metoade fine groep(), dy't de twa parameters befettet, d.w.s array e closure. Binnen de closure, we kinne defifinish hoefolle route Wy wolle. Yn 'e boppesteande koade hawwe wy defiklear trije route.

As fia browser wy tagong ta de URL localhost/myproject/first dan grypt de earste yn route typen yn 'e browser first way route.

Mei de URL localhost/myproject/second dan komt de twadde route typen yn 'e browser second way route.

Wylst mei de URL localhost/myproject/third dan komt de tredde route typen yn 'e browser third way route.

Foarheaksels fan Route Groups

De foarheaksels fan route se wurde brûkt as wy wolle leverje in URL struktuer mienskiplik foar meardere route.

Wy kinne it foarheaksel opjaan foar alle paden definites binnen de groep mei help fan de prefix array opsje yn Route Groups.

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

De koade befettet trije paden dy't tagonklik wurde kinne fanút de folgjende URL's:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

Middleware

Wy kinne ek middleware tawize oan alle rûtes binnen in groep. De middleware moat wêze defiklear foar it meitsjen fan de groep. Om te sjen hoe't jo dit dwaan, lês ús artikel Laravel middleware hoe't it wurket.

foarbyld:

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

Paad namme foarheaksels

De metoade name wurdt brûkt om elke namme foar foar te kommen route mei in oantsjutte tekenrige. Yn 'e metoade name, wy moatte de tekenrige opjaan mei in efterfolgjende karakter yn it foarheaksel.

foarbyld web.php

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

Ercole Palmeri

Ynnovaasje nijsbrief
Mis it wichtichste nijs oer ynnovaasje net. Meld jo oan om se fia e-post te ûntfangen.

Recent articles

De takomst is hjir: hoe't de skipfeartsektor de wrâldekonomy revolúsjonearret

De marinesektor is in wiere wrâldwide ekonomyske macht, dy't navigearre is nei in merk fan 150 miljard ...

1 mei 2024

Utjouwers en OpenAI tekenje oerienkomsten om de stream fan ynformaasje te regeljen ferwurke troch Artificial Intelligence

Ofrûne moandei kundige de Financial Times in deal oan mei OpenAI. FT lisinsje har sjoernalistyk fan wrâldklasse ...

30 april 2024

Online betellingen: Hjir is hoe streamingtsjinsten jo foar altyd betelje

Miljoenen minsken betelje foar streamingtsjinsten, beteljen moanlikse abonnemintskosten. It is gewoane miening dat jo ...

29 april 2024

Veeam hat de meast wiidweidige stipe foar ransomware, fan beskerming oant antwurd en herstel

Coveware troch Veeam sil trochgean mei it leverjen fan antwurdtsjinsten foar cyberafpersing ynsidint. Coveware sil forensyske en sanearjen mooglikheden oanbiede ...

23 april 2024