Maqolalar

Laravel: laravel marshrutlashiga kirish

Laravelda marshrutlash foydalanuvchilarga barcha ilovalar so'rovlarini tegishli kontrollerga yo'naltirish imkonini beradi. Laraveldagi aksariyat asosiy marshrutlar marshrutlashning oddiy va ifodali usulini ta'minlovchi yagona aktiv identifikatorini taniydi va qabul qiladi.

Marshrut (marshrut) nima?

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

Laraveldagi marshrut nima?

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.

uchun usullar 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.phpo `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.

Laravelda yo'llarni qanday yaratish mumkin

Keling, Laravelda o'z yo'llaringizni qanday yaratishingiz mumkinligini ko'rib chiqaylik.

Asosiy GET yo'li

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 "numberQavslar 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.

Muntazam ifodalar marshrut parametrlari uchun cheklovlar sifatida

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.

Innovatsion axborot byulleteni
Innovatsiyalar haqidagi eng muhim yangiliklarni o'tkazib yubormang. Ularni elektron pochta orqali olish uchun ro'yxatdan o'ting.

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.

Boshqarish funktsiyasi bilan Laravel Marshrutlash

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.

Yo'lga nom bering

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.

Prefikslari 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

O'rtacha dastur

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

Yo'l nomi prefikslari

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

Innovatsion axborot byulleteni
Innovatsiyalar haqidagi eng muhim yangiliklarni o'tkazib yubormang. Ularni elektron pochta orqali olish uchun ro'yxatdan o'ting.

So'nggi maqolalar

Kelajak bu yerda: Yuk tashish sanoati global iqtisodiyotni qanday inqilob qilmoqda

Harbiy dengiz sektori 150 milliardlik bozorga yo'l olgan haqiqiy global iqtisodiy kuchdir...

1 may 2024

Noshirlar va OpenAI sun'iy intellekt tomonidan qayta ishlangan ma'lumotlar oqimini tartibga solish bo'yicha shartnomalar imzolaydilar.

O'tgan dushanba kuni Financial Times OpenAI bilan shartnoma imzolaganini e'lon qildi. FT o'zining jahon darajasidagi jurnalistikasini litsenziyalaydi...

30 Aprel 2024

Onlayn to'lovlar: Streaming xizmatlari sizni qanday qilib abadiy to'lashga majbur qiladi

Millionlab odamlar oylik abonent to'lovlarini to'lab, oqim xizmatlari uchun to'laydilar. Umumiy fikr, siz ...

29 Aprel 2024

Veeam to'lov dasturini himoya qilishdan tortib javob berish va tiklashgacha bo'lgan eng keng qamrovli yordamga ega

Veeam tomonidan ishlab chiqarilgan Coveware kiber tovlamachilik hodisalariga javob berish xizmatlarini taqdim etishda davom etadi. Coveware sud tibbiyoti va remediatsiya imkoniyatlarini taklif qiladi ...

23 Aprel 2024