用品

Laravel:介紹 laravel 路由

Laravel 中的路由允許用戶將所有應用程序請求路由到適當的控制器。 Laravel 中的大多數主要路由都識別並接受統一資產標識符和閉包,提供了一種簡單且富有表現力的路由方式。

什麼是路線(route)?

路徑是為您的應用程序創建請求 URL 的一種方式。 這些 URL 不需要與網站上的特定文件相關聯,並且易於閱讀且對 SEO 友好。

在 Laravel 中,路徑是在 le 文件夾中創建的 routes. 它們在文件中創建 web.php 對於網站,在 api.php 用於 API。

這些 route 被分配到組 middleware 網絡,突出顯示會話狀態和安全性 CSRF. 中的路線 route/api.php 它們是無狀態的,被分配到 API 中間件組。
預安裝defiLaravel nita 有兩種路徑,一種用於 Web,一種用於 API。 這就是網絡路徑的樣子 web.php:

Route::get('/', function () {
   return view('welcome');
});

Laravel 中的路由是什麼?

所有 Laravel 路徑都是 definiti 位於目錄內的路徑文件中 routes。 路線管理應用程序, defi在文件中完成 App\Providers\RouteServiceProvider, 負責自動排列這些文件。 文件 route/web.php defi完成 Web 界面的路徑。

這是可能的 defi完成此控制器操作的路徑如下:

Route::get(‘user/{id}’, ‘UserController@show’);

Route::resource: 方法 Route::resource 生成應用程序所需的所有基本路徑,並通過控制器類進行管理。

當請求與指定的路由 URI 匹配時,調用該方法 show defi在控制器中完成 App\Http\ControllersUserController,將路由參數傳遞給方法。

對於資源,你需要在應用上做兩件事 Laravel. 首先,你需要創建一個資源路徑 Laravel 提供插入、更新、查看和刪除路徑。 其次,創建一個資源控制器,提供插入、更新、查看和刪除的方法。

預安裝defiLaravel nita 有兩種路徑:一種用於 Web,另一種用於 API。 web.php 中的 Web 路由如下所示:

Route::get(‘/’, function () {

return view(‘welcome’);

});

Laravel 中間件 充當請求和反應之間的橋樑。 它可以是某種過濾器組件。

Laravel 與一個工作 中間件 它的任務是確認客戶端應用程序是否已通過驗證。 如果客戶端已確認,則路由將重定向到主頁或登錄頁面。

的方法 route

之前的代碼 defi完成主頁的路徑。 每當該路由收到請求時 get 為 /, 將返回 view welcome

所有 Laravel 路徑都是 defi尼蒂在你的 routing, 它們位於目錄 dei 內 routes. 最後, l'AppProvidersRouteServiceProvider 應用程序排列這些記錄。 文件 route/web.php 包含為您的 Web 界面管理的路由。

路徑結構非常簡單。 打開相應的文件 (`web.phpo `api.php) 並開始代碼行 `Route:: `,後跟要分配給該特定路由的請求,然後指定將在請求後執行的功能。

Laravel 提供以下路徑方法:

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

路徑是 defi在 Laravel 中,Route 類中包含 HTTP、要回复的路由和關閉或控制器。

如何在 Laravel 中創建路徑

讓我們看看如何在 Laravel 中創建自己的路徑。

一個基本的 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的表defi晚上,如果用戶路由到`/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 路由

在 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網頁.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.

隨著網址 localhost/myproject/second 然後是第二個 route 在瀏覽器中輸入 second way route.

使用 URL localhost/myproject/third 然後是第三個 route 在瀏覽器中輸入 third way route.

的前綴 Route Groups

的前綴 route 當我們想要提供多個通用的 URL 結構時使用它們 route.

我們可以為所有路徑指定前綴 defi組內使用前綴數組選項 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 中間件是如何工作的.

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

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。

最近的文章

英國反壟斷監管機構對 GenAI 向 BigTech 發出警報

英國 CMA 對大型科技公司在人工智慧市場的行為發出了警告。那裡…

18月2024

Casa Green:義大利永續未來的能源革命

歐盟為提高建築物能源效率而製定的「綠色案例」法令已結束立法程序…

18月2024

根據新的 Casaleggio Associati 報告,義大利電子商務成長了 27%

Casaleggio Associati 發布了義大利電子商務年度報告。題為「人工智慧商務:人工智慧電子商務的前沿」的報告...

17月2024

絕妙點子:Bandalux 推出 Airpure®,淨化空氣的窗簾

不斷技術創新以及對環境和人民福祉的承諾的結果。 Bandalux 推出 Airpure®,一款帳篷…

12月2024