Laravel - 路由



在 Laravel 中,所有請求都透過路由進行對映。基本路由將請求路由到關聯的控制器。本章討論 Laravel 中的路由。

Laravel 中的路由包括以下類別:

  • 基本路由
  • 路由引數
  • 命名路由

基本路由

所有應用程式路由都在 **app/routes.php** 檔案中註冊。此檔案告訴 Laravel 它應該響應的 URI,以及關聯的控制器將對其進行特定呼叫。歡迎頁面的示例路由可以在下面給出的螢幕截圖中看到:

Routes

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

示例

觀察以下示例以更深入地瞭解路由:

app/Http/routes.php

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

resources/view/welcome.blade.php

<!DOCTYPE html>
<html>
   <head>
      <title>Laravel</title>
      <link href = "https://fonts.googleapis.com/css?family=Lato:100" rel = "stylesheet" 
         type = "text/css">
      
      <style>
         html, body {
            height: 100%;
         }
         body {
            margin: 0;
            padding: 0;
            width: 100%;
            display: table;
            font-weight: 100;
            font-family: 'Lato';
         }
         .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
         }
         .content {
            text-align: center;
            display: inline-block;
         }
         .title {
            font-size: 96px;
         }
      </style>
   </head>
   
   <body>
      <div class = "container">
         
         <div class = "content">
            <div class = "title">Laravel 5.1</div>
         </div>
			
      </div>
   </body>
</html>

路由機制如下圖所示:

Routing Mechanism

現在讓我們詳細瞭解路由機制中涉及的步驟:

**步驟 1** - 最初,我們應該執行應用程式的根 URL。

**步驟 2** - 現在,執行的 URL 應該與 **route.php** 檔案中的相應方法匹配。在本例中,它應該匹配方法和根 ('/') URL。這將執行相關的函式。

**步驟 3** - 該函式呼叫模板檔案 **resources/views/welcome.blade.php**。接下來,該函式呼叫 **view()** 函式,引數為 **'welcome'**,不使用 **blade.php**。

這將生成如下所示的 HTML 輸出:

Laravel5

路由引數

有時在 Web 應用程式中,您可能需要捕獲傳遞給 URL 的引數。為此,您應該修改 **routes.php** 檔案中的程式碼。

您可以透過兩種方式在 **routes.php** 檔案中捕獲引數,如下所述:

必填引數

這些引數是 Web 應用程式路由必須強制捕獲的引數。例如,從 URL 中捕獲使用者的識別號非常重要。這可以透過定義如下所示的路由引數來實現:

Route::get('ID/{id}',function($id) {
   echo 'ID: '.$id;
});

可選引數

有時開發人員可以將引數設定為可選,這可以透過在 URL 中的引數名稱後新增 **?** 來實現。必須將預設值作為引數名稱提及。請檢視以下示例,該示例顯示瞭如何定義可選引數:

Route::get('user/{name?}', function ($name = 'TutorialsPoint') { return $name;});

上面的示例檢查值是否與 **TutorialsPoint** 匹配,並相應地路由到定義的 URL。

命名路由

命名路由允許以一種方便的方式建立路由。可以使用 name 方法連結到路由定義中來指定路由鏈。以下程式碼顯示了使用控制器建立命名路由的示例:

Route::get('user/profile', 'UserController@showProfile')->name('profile');

使用者控制器將呼叫引數為 **profile** 的 **showProfile** 函式。引數使用 name 方法連結到路由定義中。

廣告