Артиколи

Ларавел: laravel маршрутизациясына кіріспе

Laravel бағдарламасында маршруттау пайдаланушыларға барлық қолданба сұрауларын тиісті контроллерге бағыттауға мүмкіндік береді. Ларавелдегі негізгі маршруттардың көпшілігі маршруттаудың қарапайым және мәнерлі әдісін қамтамасыз ететін жабылумен бірге Бірыңғай актив идентификаторын таниды және қабылдайды.

Маршрут (маршрут) дегеніміз не?

Жол қолданбаға сұрау URL мекенжайын жасау тәсілі болып табылады. Бұл URL мекенжайларын веб-сайттағы белгілі бір файлдармен байланыстырудың қажеті жоқ және адам оқуға ыңғайлы және SEO үшін қолайлы.

Laravel-те жолдар le қалтасының ішінде жасалады routes. Олар файлда жасалады web.php веб-сайттар үшін және ішінде api.php API үшін.

Квест route топқа тағайындалады middleware сеанс күйін және қауіпсіздікті бөлектеу CSRF. Жолдар route/api.php олар азаматтығы жоқ және API аралық бағдарламалық құрал тобына тағайындалған.
Алдын ала орнатуdefiLaravel nita екі жолмен келеді, біреуі веб үшін және екіншісі API үшін. Вебке арналған жол осылай көрінеді 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.phpo `api.php) және код жолын келесіден бастаңыз `Route:: `, содан кейін сол нақты маршрутқа тағайындағыңыз келетін сұрауды басып, сұраудан кейін орындалатын функцияны көрсетіңіз.

Laravel келесі жол әдістерін ұсынады:

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

Жолдар defiLaravel-те HTTP бар Route класында, жауап беру және жабу маршруты немесе контроллер.

Ларавелде жолдарды қалай жасауға болады

Ларавелде өз жолдарыңызды қалай жасауға болатынын көрейік.

Негізгі GET жолы

Енді мен 2 уақыт кестесін басып шығаратын негізгі жолды жасаймын.

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

Жоғарыдағы кодта мен URL мекенжайы үшін GET сұрау жолын жасадым /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' өндірілетін болады.

Тұрақты өрнектер маршрут параметрлері үшін шектеулер ретінде

Алдыңғы мысалда біз көбейту кестесін құру жолын жасадық, бірақ көбейту кестесін құру кезінде қателерді болдырмау үшін жолдың параметрі шын мәнінде сан екенін қалай қамтамасыз етуге болады?

Ларавелде сіз жасай аласыз 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

Ларавелде сіз жасай аласыз defiмаршрут үшін Controller әдісін қолданыңыз. Контроллер әдісі барлық әрекеттерді орындайды defiпайдаланушы маршрутқа кірген сайын.
Келесі кодпен біз контроллер әдісін тағайындаймыз 'functionname' маршрутқа:

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

Код келесіден басталады `Route::` және сондықтан defiжолға сұрау әдісін жасайды. Кейіннен, defiӘдіс атауының алдына @ белгісін қосу арқылы жолды және контроллерді әдіспен бірге аяқтаңыз.

Жолға атау беріңіз

Ларавелде сіз жасай аласыз 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, сөзбе-сөз жол топтары, жолдарды топтастыруға мүмкіндік беретін Ларавелдің маңызды мүмкіндігі болып табылады. Жол топтары барлық топтастырылған жолдарға атрибуттарды қолданғыңыз келгенде пайдалы. Жол топтарын пайдалансаңыз, төлсипаттарды әрбір жолға жеке қолданудың қажеті жоқ; бұл қайталануды болдырмайды. сияқты атрибуттарды ортақ пайдалануға мүмкіндік береді middleware o namespaces, сенза defiәрбір жеке жолда осы атрибуттарды аяқтаңыз. Бұл ортақ атрибуттарды әдіске бірінші параметр ретінде массив пішімінде беруге болады Route::group.

Маршрут тобының синтаксисі

Route::group([], callback);  

көгершін []: бірінші параметр ретінде топтық әдіске берілген массив.

мысалы 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" ;   
   });  
});  

Кодта, 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ішіндегі префикс массиві опциясын пайдаланып топ ішінде nites 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 қорғаныстан жауап беруге және қалпына келтіруге дейін төлемдік бағдарламалық құралға ең жан-жақты қолдау көрсетеді

Veeam ұсынған Coveware кибербопсалау оқиғаларына жауап беру қызметтерін көрсетуді жалғастырады. Coveware криминалистикалық және қалпына келтіру мүмкіндіктерін ұсынады ...

23 Сәуір 2024

Инновацияны өз тіліңізде оқыңыз

Инновациялық ақпараттық бюллетень
Инновация туралы ең маңызды жаңалықтарды жіберіп алмаңыз. Оларды электрондық пошта арқылы алу үшін тіркеліңіз.

Артымыздан