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>

路由机制如下图所示 −

路由机制

现在让我们详细了解路由机制所涉及的步骤 −

步骤 1 − 首先,我们应该执行应用程序的根 URL。

步骤 2 − 现在,执行的 URL 应该与 route.php 文件中的相应方法匹配。在本例中,它应该匹配方法和根 ('/') URL。这将执行相关函数。

步骤 3 −该函数调用模板文件 resources/views/welcome.blade.php。接下来,该函数使用参数 'welcome' 调用 view() 函数,而不使用 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');

用户控制器将调用函数 showProfile,参数为 profile。参数使用 name 方法应用于路由定义。