Atik

Laravel: entwodiksyon nan routage laravel

Wout nan Laravel pèmèt itilizatè yo dirije tout demann aplikasyon yo nan kontwolè ki apwopriye a. Pifò wout prensipal nan Laravel rekonèt epi aksepte yon Idantifikasyon Byen Inifòm ansanm ak yon fèmen, bay yon fason senp ak ekspresif nan wout.

Ki sa ki yon wout?

Chemen an se yon fason pou kreye yon URL demann pou aplikasyon w lan. URL sa yo pa oblije asosye ak dosye espesifik sou yon sit entènèt epi yo lizib epi yo optimize pou SEO.

Nan Laravel, chemen yo kreye nan katab dosye yo routes. Yo kreye nan dosye a web.php pou sit entènèt, ak nan api.php pou APIs.

sa yo route yo asiyen nan gwoup la middleware rezo, mete aksan sou eta sesyon ak sekirite CSRF. Wout yo nan route/api.php yo apatrid epi yo asiyen nan gwoup middleware API.
Pre-enstalasyon andefiLaravel nita vini ak de chemen, youn pou entènèt la ak lòt la pou API a. Men ki jan chemen an nan entènèt la sanble web.php:

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

Ki sa ki yon wout nan Laravel?

Tout chemen Laravel yo ye definited nan dosye yo chemen yo te jwenn nan anyè a routes. Aplikasyon jesyon wout la, definited nan dosye a App\Providers\RouteServiceProvider, pran swen otomatikman alignement fichiers sa yo. Dosye a route/web.php defifini chemen yo pou koòdone entènèt ou an.

Li posib defifini yon chemen pou aksyon kontwolè sa a jan sa a:

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

Route::resource: metòd la Route::resource pwodui tout chemen debaz ki nesesè pou yon aplikasyon epi li jere atravè klas kontwolè a.

Lè yon demann matche ak URI wout espesifye a, yo rele metòd la show definited nan kontwolè a App\Http\ControllersUserController, pase paramèt wout yo nan metòd la.

Pou resous, ou bezwen fè de bagay sou aplikasyon an Laravel. Premyèman, ou bezwen kreye yon chemen resous sou Laravel ki bay insert, mete ajou, wè ak efase chemen. Dezyèmman, kreye yon kontwolè resous ki bay yon metòd pou mete, mete ajou, gade, ak efase.

Pre-enstalasyon andefiLaravel nita vini ak de chemen: youn pou entènèt la ak lòt la pou API a. Men ki jan wout entènèt la sanble nan web.php:

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

return view(‘welcome’);

});

Laravel Middleware aji kòm yon pon ant demann lan ak reyaksyon an. Li kapab yon sòt de eleman filtre.

Laravel travay ak yon middleware ki gen travay pou konfime si aplikasyon kliyan an verifye oswa ou pa. Nan ka kliyan an konfime, Lè sa a, wout la redireksyon nan paj kay la oswa yon paj login.

Metòd yo pou route

Kòd anvan an defiyon chemen nan paj lakay la parèt. Chak fwa wout sa a resevwa yon demann get pou /, pral retounen nan view welcome

Tout chemen Laravel yo ye defini nan dosye ou yo routing, ki sitiye andedan anyè a dei routes. An konsekans, l'AppProvidersRouteServiceProvider nan aplikasyon an liy dosye sa yo. Dosye a route/web.php gen wout ki jere pou koòdone entènèt ou an.

Estrikti wout yo trè senp. Louvri dosye ki apwopriye a (`web.phpo `api.php) epi kòmanse liy kòd la ak `Route:: `, ki te swiv pa demann ou vle bay nan wout espesifik sa a epi apre sa presize fonksyon ki pral fèt apre demann lan.

Laravel ofri metòd chemen sa yo:

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

Wout yo se definited nan Laravel andedan klas la Route ak HTTP, wout la pou reponn ak fèmti a, oswa kontwolè a.

Ki jan yo kreye chemen nan Laravel

Ann wè ki jan ou ka kreye pwòp wout ou nan Laravel.

Yon chemen GET debaz

Koulye a, mwen pral kreye yon chemen debaz ki pral enprime tab la 2 fwa.

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

Nan kòd ki anwo a, mwen te kreye yon chemen demann GET pou URL la /table, ki pral enprime 2 fwa tab la sou ekran an.

Ann wè menm kòd la kounye a, paramèt nimewo pou ki nou vle tab miltiplikasyon an:

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

Nan kòd la 'number' ant parantèz yo ki reprezante paramèt la, sa vle di nimewo pou yo pral kalkile tab miltiplikasyon an. Chak fwa yo espesifye yon URL tankou sa a /table/n, Lè sa a, tablo nimewo a pral enprime n.

Genyen tou yon fason yo konbine tou de karakteristik nan yon sèl chemen. Laravel ofri karakteristik opsyon paramèt ki pèmèt ou ajoute paramèt si ou vle lè l sèvi avèk mak kesyon '?' apre paramèt opsyonèl la ak valè pre adefinwit. Ann wè egzanp lan:

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

Nan kòd ki pi wo a nou te kreye paramèt wout nou an, fè nimewo a opsyonèl, kidonk si yon itilizatè wout `/table` Lè sa a, li pral jenere tab nan 2 pa pre anviwònmandefinita epi si yon itilizatè wout nan `/table/{number}Se poutèt sa li se tab la nimewo 'number' pral pwodwi.

Ekspresyon regilye kòm kontrent pou paramèt wout yo

Nan egzanp anvan an nou te kreye yon chemen pou jenere tab miltiplikasyon an, men ki jan nou ka asire ke paramèt chemen an se aktyèlman yon nimewo, pou fè pou evite erè pandan jenerasyon tab miltiplikasyon an?

Nan Laravel, ou kapab defifini yon kontrent sou paramèt wout la lè l sèvi avèk metòd la `where` sou egzanp wout la. `where` aksepte non paramèt la ak yon ekspresyon regilye pou paramèt sa a.

Bilten inovasyon
Pa rate nouvèl ki pi enpòtan sou inovasyon. Enskri pou resevwa yo pa imel.

Koulye a, ann wè yon egzanp yon kontrent pou paramèt nou an `{numero}` pou asire ke se sèlman yon nimewo pase nan fonksyon an.

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

Nan kòd ki anwo a, nou te itilize yon ekspresyon regilye pou nimewo chemen an. Koulye a, si yon itilizatè ap eseye wout nan /tab/no , yo pral parèt yon eksepsyon NotFoundHttpException.

Laravel Routing ak Fonksyon Kontwòl

Nan Laravel, ou kapab defifini yon metòd Kontwolè pou yon wout. Yon metòd kontwolè fè tout aksyon yo definite chak fwa yon itilizatè jwenn aksè nan wout la.
Avèk kòd sa a nou ap bay metòd kontwolè a 'functionname' nan yon wout:

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

Kòd la kòmanse ak `Route::` ak Lè sa a, defimetòd demann pou wout la fini. Apre sa, defifini chemen w ak kontwolè w ​​ansanm ak metòd la lè w ajoute senbòl @ anvan non metòd la.

Bay chemen an yon non

Nan Laravel, ou kapab defivini ak yon non pou chemen ou. Non sa a souvan trè itil. Pou egzanp, si ou vle redireksyon yon itilizatè soti nan yon kote nan yon lòt, ou pa bezwen defifini URL la redireksyon konplè. Ou ka tou senpleman bay non li. Ou kapab definite non wout la lè l sèvi avèk metòd la `name` nan egzanp wout la.

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

Koulye a, mwen te kapab rejenere URL la pou chemen sa a, atravè kòd sa a:

$url = route('table');

Menm jan an tou, pou redireksyon sou URL sa a, sentaks ki kòrèk la ta dwe:

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

Route Groups

I Route Groups, literalman gwoup chemen, se yon karakteristik esansyèl nan Laravel, ki pèmèt ou gwoup chemen. Gwoup chemen yo itil lè ou vle aplike atribi nan tout chemen gwoupe yo. Si w itilize gwoup wout, ou pa oblije aplike atribi endividyèlman nan chak wout; sa a evite repetisyon. Li pèmèt ou pataje atribi tankou middleware o namespaces, san definise atribi sa yo sou chak chemen sèl. Atribi pataje sa yo ka pase nan yon fòma etalaj kòm premye paramèt nan metòd la Route::group.

Sentaks yon gwoup wout

Route::group([], callback);  

ti pijon []: se yon etalaj ki pase nan metòd gwoup la kòm premye paramèt la.

Egzanp de Route Group nan 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" ;   
   });  
});  

Nan kòd la, defiAnn kòmanse metòd la gwoup (), ki gen de paramèt yo, i.e array e closure. Anndan an closure, nou kapab defikonnen konbyen route nou vle. Nan kòd ki anwo a, nou genyen defifini twa route.

Si nou jwenn aksè nan URL la atravè navigatè localhost/myproject/first Lè sa a, premye a entèvni route ekri nan navigatè a first way route.

Avèk URL la localhost/myproject/second Lè sa a, dezyèm lan entèvni route ekri nan navigatè a second way route.

Pandan ke ak URL la localhost/myproject/third Lè sa a, twazyèm pati a entèvni route ekri nan navigatè a third way route.

Prefiks nan Route Groups

Prefiks yo nan route yo itilize lè nou vle bay yon estrikti URL komen nan plizyè route.

Nou ka presize prefiks pou tout wout definited nan gwoup la lè l sèvi avèk opsyon nan etalaj prefiks nan Route Groups.

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

Kòd la gen twa chemen ki ka jwenn aksè nan URL sa yo:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

Middleware

Nou kapab tou bay middleware nan tout wout nan yon gwoup. Middleware a dwe defifini anvan ou kreye gwoup la. Pou wè ki jan fè li, li atik nou an Laravel middleware ki jan li fonksyone.

egzanp:

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

Prefiks non chemen yo

Metòd la name yo itilize prefiks chak non nan route ak yon fisèl espesifye. Nan metòd la name, nou bezwen presize fisèl la ak yon karaktè final nan prefiks la.

egzanp web.php

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

Ercole Palmeri

Bilten inovasyon
Pa rate nouvèl ki pi enpòtan sou inovasyon. Enskri pou resevwa yo pa imel.

Recent Articles

Veeam prezante sipò ki pi konplè pou ransomware, soti nan pwoteksyon jiska repons ak rekiperasyon

Coveware by Veeam ap kontinye bay sèvis repons pou ensidan ekstòsyon sou cyber. Coveware pral ofri medsen legal ak kapasite ratrapaj ...

23 Avril 2024

Revolisyon vèt ak dijital: Ki jan antretyen prediksyon ap transfòme endistri lwil oliv ak gaz

Antretyen prediksyon ap revolisyone sektè lwil oliv ak gaz la, ak yon apwòch inovatè ak aktif nan jesyon plant yo.…

22 Avril 2024

Regilatè antitrust UK ogmante alam BigTech sou GenAI

UK CMA te bay yon avètisman sou konpòtman Big Tech nan mache entèlijans atifisyèl la. La…

18 Avril 2024

Casa Green: revolisyon enèji pou yon avni dirab nan peyi Itali

Dekrè "Case Green", ki te fòme pa Inyon Ewopeyen an pou amelyore efikasite enèji nan bilding yo, te konkli pwosesis lejislatif li yo ak...

18 Avril 2024