Yo'l ilovangiz uchun so'rov URL manzilini yaratish usulidir. Ushbu URL manzillar veb-saytdagi muayyan fayllar bilan bog'lanishi shart emas va odamlar o'qishi mumkin va SEOga mos keladi.
Laravelda yo'llar le papkasida yaratiladi routes
. Ular faylda yaratilgan web.php
veb-saytlar uchun va ichida api.php
API uchun.
Bular route
guruhga tayinlanadi middleware
tarmoq, seans holati va xavfsizlikni ta'kidlash CSRF
. Yo'nalishlar route/api.php
ular fuqaroligi yo'q va API o'rta dasturlari guruhiga tayinlangan.
Oldindan o'rnatishdefiLaravel nita ikkita yo'l bilan keladi, biri veb uchun, ikkinchisi API uchun. Veb uchun yo'l shunday ko'rinadi web.php
:
Route::get('/', function () {
return view('welcome');
});
Barcha Laravel yo'llari definiti katalog ichida joylashgan yo'l fayllarida routes
. Marshrutni boshqarish ilovasi, defifaylga kiritilgan App\Providers\RouteServiceProvider
, ushbu fayllarni avtomatik ravishda qatorga qo'yish haqida g'amxo'rlik qiladi. Fayl route/web.php
defiveb-interfeysingiz uchun yo'llarni aniqlaydi.
Bu mumkin defiUshbu kontroller harakati uchun yo'lni quyidagicha belgilang:
Route::get(‘user/{id}’, ‘UserController@show’);
Route::resource
: usul Route::resource
ilova uchun zarur bo'lgan barcha asosiy yo'llarni ishlab chiqaradi va boshqaruvchi sinf orqali boshqariladi.
Agar so'rov belgilangan marshrut URI ga mos kelsa, usul chaqiriladi show
defiboshqaruvchida tugatildi App\Http\ControllersUserController
, marshrut parametrlarini usulga o'tkazish.
Resurslar uchun siz ilovada ikkita narsani qilishingiz kerak Laravel. Birinchidan, siz manba yo'lini yaratishingiz kerak Laravel qo'shish, yangilash, ko'rish va o'chirishni ta'minlaydi. Ikkinchidan, qo'shish, yangilash, ko'rish va o'chirish usulini ta'minlovchi resurs boshqaruvchisini yarating.
Oldindan o'rnatishdefiLaravel nita ikkita yo'l bilan keladi: biri veb uchun, ikkinchisi API uchun. Web.php da vebga yo'l qanday ko'rinishga ega:
Route::get(‘/’, function () {
return view(‘welcome’);
});
Laravel o'rta dasturi so'rov va reaktsiya o'rtasida ko'prik vazifasini bajaradi. Bu qandaydir filtr komponenti bo'lishi mumkin.
Laravel a bilan ishlash o'rta dastur mijoz ilovasi tekshirilgan yoki tekshirilmaganligini tasdiqlash vazifasi bor. Agar mijoz tasdiqlangan bo'lsa, marshrutlash bosh sahifaga yoki kirish sahifasiga yo'naltiriladi.
route
Oldingi kod defibosh sahifaga yo'l ochadi. Bu yo'l har doim so'rovni qabul qilganda get
har /
, ni qaytaradi view
welcome
.
Barcha Laravel yo'llari definiti sizning routing
, ular dei katalogida joylashgan routes
. Binobarin, l'AppProvidersRouteServiceProvider
Ilovaning ushbu yozuvlari qatoriga kiradi. Fayl route/web.php
veb-interfeysingiz uchun boshqariladigan marshrutlarni o'z ichiga oladi.
Yo'lning tuzilishi juda oddiy. Tegishli faylni oching (`web.php
` o `api.php
` ) va kod qatorini bilan boshlang `Route:: `
, soʻng oʻsha maxsus marshrutga tayinlamoqchi boʻlgan soʻrovni kiriting va soʻrovdan keyin bajariladigan funksiyani belgilang.
Laravel quyidagi yo'l usullarini taklif qiladi:
get
post
put
delete
patch
options
Yo'llar defiLaravelda HTTP bilan Route klassi, javob berish va yopish marshruti yoki kontroller bilan nited.
Keling, Laravelda o'z yo'llaringizni qanday yaratishingiz mumkinligini ko'rib chiqaylik.
Endi men 2 vaqt jadvalini chop etadigan asosiy yo'lni yaratmoqchiman.
Route::get('/table', function () {
for($i =1; $i <= 10 ; $i++){
echo "$i * 2 = ". $i*2 ."<br>";
}
});
Yuqoridagi kodda men URL uchun GET so'rov yo'lini yaratdim /table
, bu ekranda 2 ning vaqt jadvalini chop etadi.
Keling, ko'paytirish jadvali kerakli raqamni parametrlashtirgan bir xil kodni ko'rib chiqaylik:
Route::get('/table/{number}', function ($number) {
for($i =1; $i <= 10 ; $i++){
echo "$i * $number = ". $i* $number ."<br>";
}
});
Kodda "number
Qavslar orasidagi belgi parametrni, ya'ni ko'paytirish jadvali hisoblab chiqiladigan raqamni bildiradi. Har safar turdagi URL ko'rsatilganda /table/n
, keyin raqamlar jadvali chop etiladi n
.
Ikkala xususiyatni bir yo'lda birlashtirish usuli ham mavjud. Laravel ixtiyoriy parametrlar xususiyatini taklif etadi, bu esa '?' savol belgisi yordamida ixtiyoriy parametrlarni qo'shish imkonini beradi. ixtiyoriy parametr va oldingi qiymatdan keyindefikech. Keling, misolni ko'rib chiqaylik:
Route::get('/table/{number?}', function ($number = 2) {
for($i =1; $i <= 10 ; $i++){
echo "$i * $number = ". $i* $number ."<br>";
}
});
Yuqoridagi kodda biz marshrut parametrimizni yaratdik, bu raqamni ixtiyoriy qilib, agar foydalanuvchi marshrut qilsa `/table
` keyin u sukut bo'yicha 2 jadvalini yaratadidefinite va agar foydalanuvchi ` ga yo'naltirsa/table/{number}
Keyin raqamlar jadvali 'number'
ishlab chiqariladi.
Oldingi misolda biz ko'paytirish jadvalini yaratish yo'lini yaratdik, lekin ko'paytirish jadvalini yaratishda xatolikka yo'l qo'ymaslik uchun yo'lning parametri aslida raqam ekanligini qanday ta'minlashimiz mumkin?
Laravelda siz mumkin defi` usuli yordamida marshrut parametriga cheklov qo'yingwhere
` marshrut misolida. The `where
` parametr nomini va ushbu parametr uchun muntazam ifodani oladi.
Endi ` parametrimiz uchun cheklanish misolini ko'rib chiqamiz{numero}
` funksiyaga faqat raqam uzatilganligiga ishonch hosil qilish.
Route:: get ( '/table/{numero?}' , funzione ( $numero = 2 ) {
for( $i = 1 ; $i < = 10 ; $i + + ) {
echo "$i * $numero = " . $i * $numero . "<br>" ;
}
} )->where( 'numero' , '[0-9]+' ) ;
Yuqoridagi kodda biz yo'l raqami uchun muntazam ifodadan foydalandik. Endi, agar foydalanuvchi marshrutga kirishga harakat qilsa /jadval/no ko'rsatiladi NotFoundHttpException istisnosi.
Laravelda siz mumkin defimarshrut uchun Controller usulini ishlating. Tekshirish usuli barcha amallarni bajaradi definite har safar foydalanuvchi marshrutga kirganda.
Quyidagi kod bilan biz boshqaruvchi usulini tayinlaymiz 'functionname'
marshrutga:
Route:: get ( '/home' , 'YourController@functionname' ) ;
Kod bilan boshlanadi `Route::`
va shuning uchun defiyo'l uchun so'rov usulini aniqlaydi. Keyinchalik, defiUsul nomidan oldin @ belgisini qo'shish orqali yo'lingizni va boshqaruvchini usul bilan yakunlang.
Laravelda siz mumkin defiyo'lingizga nom bering. Bu nom ko'pincha juda foydali. Misol uchun, agar siz foydalanuvchini bir joydan boshqa joyga yo'naltirmoqchi bo'lsangiz, kerak emas defito'liq qayta yo'naltirish URL nish. Siz shunchaki uning ismini berishingiz mumkin. Siz .. qila olasiz; siz ... mumkin defi` usuli yordamida marshrut nomini aniqlangname
` marshrut misolida.
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’);
Endi men ushbu yo'l uchun urlni quyidagi kod orqali qayta tiklashim mumkin:
$url = route('table');
Xuddi shunday, ushbu URL manziliga yo'naltirish uchun to'g'ri sintaksis:
return redirect()->route('table');
Route Groups
I Route Groups
, tom ma'noda yo'l guruhlari, Laravel'dagi muhim xususiyat bo'lib, u sizga yo'llarni guruhlash imkonini beradi. Yo'l guruhlari barcha guruhlangan yo'llarga atributlarni qo'llashni xohlaganingizda foydalidir. Agar siz yo'l guruhlarini ishlatsangiz, atributlarni har bir yo'lga alohida qo'llashingiz shart emas; bu takrorlanishning oldini oladi. kabi atributlarni almashish imkonini beradi middleware
o namespaces
, holda defihar bir alohida yo'lda ushbu atributlarni tugating. Ushbu umumiy atributlar metodning birinchi parametri sifatida massiv formatida uzatilishi mumkin Route::group
.
Marshrut guruhining sintaksisi
Route::group([], callback);
Qo'zg'olon []: birinchi parametr sifatida guruh usuliga uzatiladigan massivdir.
Misol 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" ;
});
});
Kodda, defiusulini topamiz group(), bu ikkita parametrni o'z ichiga oladi, ya'ni array
e closure
. Ichkarida closure
, Biz qila olamiz defiqancha tugating route
Biz xohlaymiz. Yuqoridagi kodda bizda mavjud defiuchta yakunladi route
.
Agar brauzer orqali biz URL manziliga kiramiz localhost/myproject/first
keyin birinchisi aralashadi route
brauzerda yozish first way route
.
URL bilan localhost/myproject/second
keyin ikkinchisi keladi route
brauzerda yozish second way route
.
URL bilan birga localhost/myproject/third
keyin uchinchisi keladi route
brauzerda yozish third way route
.
Route Groups
Prefikslari route
ular bir nechta uchun umumiy URL tuzilmasini taqdim qilmoqchi bo'lganimizda ishlatiladi route
.
Biz barcha yo'llar uchun prefiksni belgilashimiz mumkin defiPrefiks qatori opsiyasidan foydalangan holda guruh ichidagi nites Route Groups
.
Misol 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";
});
});
Kod quyidagi URL manzillaridan kirish mumkin bo'lgan uchta yo'lni o'z ichiga oladi:
/movie/godfather ---> Godfather casting
/movie/pulpfiction ---> Pulp Fiction casting
/movie/forrestgump ---> Forrest Gump casting
Shuningdek, biz guruh ichidagi barcha marshrutlarga o'rta dasturni belgilashimiz mumkin. O'rta dastur bo'lishi kerak defiguruhni yaratishdan oldin tugatdi. Buni qanday qilishni ko'rish uchun bizning maqolamizni o'qing Laravel o'rta dasturi qanday ishlaydi.
misol:
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";
});
});
Usul name
ning har bir nomiga prefiks qo'yish uchun ishlatiladi route
belgilangan qator bilan. Usulda name
, biz prefiksda keyingi belgi bilan qatorni ko'rsatishimiz kerak.
misol web.php
Route::name('movie.')->group(function()
{
Route::get('users', function()
{
return "movie.films";
})->name('films');
});
Ercole Palmeri
Harbiy dengiz sektori 150 milliardlik bozorga yo'l olgan haqiqiy global iqtisodiy kuchdir...
O'tgan dushanba kuni Financial Times OpenAI bilan shartnoma imzolaganini e'lon qildi. FT o'zining jahon darajasidagi jurnalistikasini litsenziyalaydi...
Millionlab odamlar oylik abonent to'lovlarini to'lab, oqim xizmatlari uchun to'laydilar. Umumiy fikr, siz ...
Veeam tomonidan ishlab chiqarilgan Coveware kiber tovlamachilik hodisalariga javob berish xizmatlarini taqdim etishda davom etadi. Coveware sud tibbiyoti va remediatsiya imkoniyatlarini taklif qiladi ...