Членове

Laravel: въведение в маршрутизирането на laravel

Маршрутизирането в Laravel позволява на потребителите да маршрутизират всички заявки за приложения към подходящия контролер. Повечето първични маршрути в Laravel разпознават и приемат Uniform Asset Identifier заедно със затваряне, осигурявайки прост и изразителен начин за маршрутизиране.

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

Пътят е начин за създаване на URL адрес на заявка за вашето приложение. Не е необходимо тези URL адреси да се свързват с конкретни файлове на уебсайт и са четими за хора и удобни за SEO.

В Laravel пътищата се създават вътре в папката на файл 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 Middleware действа като мост между искането и реакцията. Може да е някакъв филтърен компонент.

Laravel работа с a мидълуер който има за задача да потвърди дали клиентското приложение е верифицирано или не. В случай, че клиентът е потвърден, маршрутизирането пренасочва към началната страница или страница за вход.

Методите за route

Предишният код defiзавършва път към началната страница. Всеки път, когато този път получи заявка get за /, ще върне view welcome

Всички пътища на Laravel са defiнито във вашия routing, които се намират в директорията dei routes. Следователно, l'AppProvidersRouteServiceProvider на приложението подрежда тези записи. Файлът route/web.php съдържа маршрутите, които се управляват за вашия уеб интерфейс.

Структурата на пътя е много проста. Отворете съответния файл (`web.phpo `api.php) и започнете реда с код `Route:: `, последвано от заявката, която искате да присвоите на този конкретен маршрут и след това укажете функцията, която ще бъде изпълнена след заявката.

Laravel предлага следните методи за път:

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

Пътищата са definited в 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.

Можем да посочим префикса за всички пътища definites в рамките на групата, използвайки опцията за префиксен масив в 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

Middleware

Можем също да присвоим междинен софтуер към всички маршрути в група. Мидълуерът трябва да бъде defiприключи преди създаването на групата. За да видите как да направите това, прочетете нашата статия Laravel междинен софтуер как работи.

Esempio:

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

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Последни статии

Зелена и цифрова революция: как предсказуемата поддръжка трансформира петролната и газовата индустрия

Прогнозната поддръжка революционизира сектора на петрола и газа с иновативен и проактивен подход към управлението на инсталациите.…

22 април 2024

Британският антитръстов регулатор повдига тревога на BigTech за GenAI

CMA на Обединеното кралство издаде предупреждение относно поведението на Big Tech на пазара на изкуствен интелект. Там…

18 април 2024

Casa Green: енергийна революция за устойчиво бъдеще в Италия

Указът „Case Green“, формулиран от Европейския съюз за повишаване на енергийната ефективност на сградите, приключи своя законодателен процес с...

18 април 2024

Електронната търговия в Италия с +27% според новия доклад на Casaleggio Associati

Представен е годишният доклад на Casaleggio Associati за електронната търговия в Италия. Доклад, озаглавен „AI-Commerce: границите на електронната търговия с изкуствен интелект“....

17 април 2024

Прочетете Иновация на вашия език

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Следвайте ни