Шлях - гэта спосаб стварыць 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 ёсць 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.php
` o `api.php
` ) і пачаць радок кода з `Route:: `
, пасля чаго ідзе запыт, які вы хочаце прызначыць гэтаму канкрэтнаму маршруту, а потым указваеце функцыю, якая будзе выканана пасля гэтага запыту.
Laravel прапануе наступныя метады шляху:
get
post
put
delete
patch
options
Сцежкі ёсць defiу Laravel у класе Route з HTTP, маршрутам для адказу і закрыцця або кантролерам.
Давайце паглядзім, як вы можаце ствараць свае ўласныя шляхі ў Laravel.
Зараз я збіраюся стварыць асноўны шлях, які будзе друкаваць табліцу раз 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 вы можаце 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-мільярднага рынку...
У мінулы панядзелак Financial Times абвясціла аб здзелцы з OpenAI. FT ліцэнзуе сваю журналістыку сусветнага ўзроўню...
Мільёны людзей плацяць за струменевыя паслугі, плацячы штомесячную абаненцкую плату. Распаўсюджана меркаванне, што вы…
Coveware ад Veeam працягне прадастаўляць паслугі рэагавання на інцыдэнты кібервымагальніцтва. Coveware будзе прапаноўваць судова-медыцынскую экспертызу і магчымасці выпраўлення…