Артыкулы

Laravel: увядзенне ў маршрутызацыю Laravel

Маршрутызацыя ў Laravel дазваляе карыстальнікам накіроўваць усе запыты прыкладанняў да адпаведнага кантролера. Большасць асноўных маршрутаў у Laravel распазнаюць і прымаюць Uniform Asset Identifier разам з замыканнем, забяспечваючы просты і выразны спосаб маршрутызацыі.

Што такое маршрут (маршрут)?

Шлях - гэта спосаб стварыць URL запыту для вашага прыкладання. Гэтыя URL-адрасы не павінны быць звязаныя з пэўнымі файламі на вэб-сайце, яны зразумелыя для чытання і зручныя для SEO.

У Laravel шляхі ствараюцца ўнутры папкі le routes. Яны ствараюцца ў файле web.php для вэб-сайтаў і ўнутры api.php для API.

Гэтыя route прызначаюцца ў групу middleware сеткі, вылучаючы статус сеанса і бяспеку CSRF. Маршруты ў route/api.php яны не маюць статусу і аднесены да групы прамежкавага праграмнага забеспячэння API.
Папярэдняя ўстаноўкаdefiLaravel nita пастаўляецца з двума шляхамі, адзін для Інтэрнэту і адзін для API. Вось так выглядае шлях для web in web.php:

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

Што такое маршрут у Laravel?

Усе шляхі Laravel ёсць definiti ў файлах шляху, размешчаных у каталогу routes. Прыкладанне для кіравання маршрутам, defiскончана ў файле App\Providers\RouteServiceProvider, клапоціцца аб аўтаматычным выбудоўванні гэтых файлаў. Файл route/web.php defiзавяршае шляхі для вашага вэб-інтэрфейсу.

Можна defiстварыце шлях для гэтага дзеяння кантролера наступным чынам:

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

Route::resource: метад Route::resource стварае ўсе асноўныя шляхі, неабходныя для прыкладання, і кіруецца праз клас кантролера.

Калі запыт супадае з указаным URI маршруту, выклікаецца метад show defiскончыў у кантролеры App\Http\ControllersUserController, перадаючы параметры маршруту метаду.

Што тычыцца рэсурсаў, вам трэба зрабіць дзве рэчы ў дадатку Laravel. Спачатку вам трэба стварыць шлях да рэсурсу Laravel які забяспечвае ўстаўку, абнаўленне, прагляд і выдаленне шляхоў. Па-другое, стварыце кантролер рэсурсаў, які забяспечвае метад устаўкі, абнаўлення, прагляду і выдалення.

Папярэдняя ўстаноўкаdefiLaravel nita пастаўляецца з двума шляхамі: адзін для Інтэрнэту і адзін для API. Вось як выглядае маршрут да Інтэрнэту ў web.php:

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

return view(‘welcome’);

});

Прамежкавае праграмнае забеспячэнне Laravel дзейнічае як мост паміж запытам і рэакцыяй. Гэта можа быць нейкі кампанент фільтра.

Laravel працаваць з а прамежкавае праграмнае забеспячэнне які мае задачу пацвердзіць, праверана кліенцкае прыкладанне ці не. У выпадку пацверджання кліента маршрутызацыя перанакіроўвае на галоўную старонку або старонку ўваходу.

Метады для route

Папярэдні код defiзавяршае шлях да галоўнай старонкі. Кожны раз, калі гэты маршрут атрымлівае запыт get для /, верне view welcome

Усе шляхі Laravel ёсць definiti ў вашым routing, якія знаходзяцца ўнутры каталога dei routes. Такім чынам, l'AppProvidersRouteServiceProvider прыкладання выраўноўвае гэтыя запісы. Файл route/web.php змяшчае маршруты, якія кіруюцца для вашага вэб-інтэрфейсу.

Структура шляху вельмі простая. Адкрыйце адпаведны файл (`web.phpo `api.php) і пачаць радок кода з `Route:: `, пасля чаго ідзе запыт, які вы хочаце прызначыць гэтаму канкрэтнаму маршруту, а потым указваеце функцыю, якая будзе выканана пасля гэтага запыту.

Laravel прапануе наступныя метады шляху:

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

Сцежкі ёсць defiу Laravel у класе Route з HTTP, маршрутам для адказу і закрыцця або кантролерам.

Як стварыць шляхі ў Laravel

Давайце паглядзім, як вы можаце ствараць свае ўласныя шляхі ў Laravel.

Базавы шлях GET

Зараз я збіраюся стварыць асноўны шлях, які будзе друкаваць табліцу раз 2.

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

У прыведзеным вышэй кодзе я стварыў шлях запыту GET для URL /table, які будзе друкаваць табліцу раз 2 на экране.

Зараз давайце паглядзім той жа код, параметризирующий лік, для якога нам патрэбна табліца множання:

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

У кодзе 'number' паміж фігурнымі дужкамі ўяўляе сабой параметр, гэта значыць лік, для якога будзе разлічана табліца множання. Кожны раз, калі указаны URL тыпу /table/n, тады будзе надрукавана лічбавая табліца n.

Таксама ёсць спосаб аб'яднаць абедзве функцыі ў адзін шлях. Laravel прапануе функцыю неабавязковых параметраў, якая дазваляе дадаваць дадатковыя параметры з дапамогай пытальніка "?" пасля неабавязковага параметра і папярэдняга значэнняdefiканец. Давайце паглядзім прыклад:

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

У прыведзеным вышэй кодзе мы стварылі наш параметр маршруту, зрабіўшы лік неабавязковым, так што калі карыстальнік маршрутызуе `/table` тады ён будзе ствараць табліцу з 2 па змаўчанніdefinite і калі карыстальнік накіроўвае да `/table/{number}Потым лічбавая табліца 'number' будзе вырабляцца.

Рэгулярныя выразы як абмежаванні для параметраў маршруту

У папярэднім прыкладзе мы стварылі шлях для генерацыі табліцы множання, але як мы можам пераканацца, што параметр шляху сапраўды з'яўляецца лікам, каб пазбегнуць памылак пры генерацыі табліцы множання?

У Laravel вы можаце defiзнішчыць абмежаванне на параметр маршрута з дапамогай метаду `where` на асобніку маршруту. `where` прымае назву параметра і рэгулярны выраз для гэтага параметра.

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Зараз давайце паглядзім прыклад абмежавання для нашага параметра `{numero}` каб пераканацца, што ў функцыю перадаецца толькі лік.

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

У прыведзеным вышэй кодзе мы выкарыстоўвалі рэгулярны выраз для нумара шляху. Цяпер, калі карыстальнік спрабуе перайсці да /табліца/не будзе адлюстроўвацца выключэнне NotFoundHttpException.

Laravel Routing з функцыяй кантролю

У Laravel вы можаце defiніш метад кантролера для шляху. Метад кантролера выконвае ўсе дзеянні defiкожны раз, калі карыстальнік атрымлівае доступ да маршруту.
З дапамогай наступнага кода мы прызначаем метад кантролера 'functionname' на маршрут:

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

Код пачынаецца з `Route::` а затым defiзавяршае метад запыту для шляху. Пасля, defiСкончыце свой шлях і кантролер разам з метадам, дадаўшы сімвал @ перад назвай метаду.

Дайце шляху назву

У Laravel вы можаце defiпрыдумайце імя для свайго шляху. Гэта імя часта бывае вельмі карысным. Напрыклад, калі вы хочаце перанакіраваць карыстальніка з аднаго месца ў іншае, вам не трэба defiзавершыце поўны URL-адрас перанакіравання. Вы можаце проста назваць яго імя. Ты можаш defiскончыце назву маршруту з дапамогай метаду `name` у асобніку маршруту.

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

Цяпер я мог бы аднавіць URL для гэтага шляху з дапамогай наступнага кода:

$url = route('table');

Аналагічным чынам, для перанакіравання на гэты URL, правільны сінтаксіс будзе:

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

Route Groups

I Route Groups, літаральна групы шляхоў, з'яўляецца важнай функцыяй Laravel, якая дазваляе групаваць шляхі. Групы шляхоў карысныя, калі вы хочаце прымяніць атрыбуты да ўсіх згрупаваных шляхоў. Калі вы выкарыстоўваеце групы шляхоў, вам не трэба прымяняць атрыбуты асобна да кожнага шляху; гэта дазваляе пазбегнуць дубліравання. Гэта дазваляе дзяліцца такімі атрыбутамі, як middleware o namespaces, сенза defiзавяршыць гэтыя атрыбуты на кожным асобным шляху. Гэтыя агульныя атрыбуты могуць быць перададзены ў фармаце масіва ў якасці першага параметра метаду Route::group.

Сінтаксіс групы маршрутаў

Route::group([], callback);  

голуб []: гэта масіў, які перадаецца метаду групы ў якасці першага параметра.

Прыклад Route Group ў 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" ;   
   });  
});  

У кодзе, defiдавайце знойдзем метад група(), які змяшчае два параметры, г.зн array e closure. Унутры ст closure, мы можам defiскончыць колькі route мы хочам. У прыведзеным вышэй кодзе мы маем defiскончыў тры route.

Калі праз браўзер мы атрымліваем доступ да URL localhost/myproject/first тады ўмешваецца першы route увод у браўзеры first way route.

З URL localhost/myproject/second затым ідзе другі route увод у браўзеры second way route.

Пакуль з URL localhost/myproject/third затым ідзе трэці route увод у браўзеры third way route.

Прыстаўкі з Route Groups

Прыстаўкі з route яны выкарыстоўваюцца, калі мы хочам забяспечыць структуру URL, агульную для некалькіх route.

Мы можам вызначыць прэфікс для ўсіх шляхоў defiунутры групы з выкарыстаннем опцыі масіва прэфіксаў in Route Groups.

Прыклад 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";  
   });  
});  

Код змяшчае тры шляхі, да якіх можна атрымаць доступ з наступных URL:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

прамежкавае

Мы таксама можам прызначыць прамежкавае праграмнае забеспячэнне для ўсіх маршрутаў у групе. Прамежкавае праграмнае забеспячэнне павінна быць defiскончана перад стварэннем групы. Каб даведацца, як гэта зрабіць, прачытайце наш артыкул Laravel прамежкавае праграмнае забеспячэнне, як гэта працуе.

прыклад:

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

Прэфіксы імёнаў шляхоў

Метад name выкарыстоўваецца для прэфікса кожнай назвы route з указаным радком. У метад name, нам трэба ўказаць радок з канчатковым сімвалам у прэфіксе.

прыклад web.php

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

Ercole Palmeri

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Апошнія артыкулы

Будучыня тут: як індустрыя суднаходства рэвалюцыянізуе сусветную эканоміку

Ваенна-марскі сектар - гэта сапраўдная глабальная эканамічная сіла, якая перайшла да 150-мільярднага рынку...

1 мая 2024

Выдаўцы і OpenAI падпісваюць пагадненні аб рэгуляванні патоку інфармацыі, апрацаванай штучным інтэлектам

У мінулы панядзелак Financial Times абвясціла аб здзелцы з OpenAI. FT ліцэнзуе сваю журналістыку сусветнага ўзроўню...

Красавік 30 2024

Інтэрнэт-плацяжы: вось як паслугі струменевай перадачы прымушаюць вас плаціць вечна

Мільёны людзей плацяць за струменевыя паслугі, плацячы штомесячную абаненцкую плату. Распаўсюджана меркаванне, што вы…

Красавік 29 2024

Veeam прапануе самую поўную падтрымку праграм-вымагальнікаў - ад абароны да адказу і аднаўлення

Coveware ад Veeam працягне прадастаўляць паслугі рэагавання на інцыдэнты кібервымагальніцтва. Coveware будзе прапаноўваць судова-медыцынскую экспертызу і магчымасці выпраўлення…

Красавік 23 2024

Чытайце Innovation на сваёй мове

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Выконвайце за намі