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 应该与路由文件文件,在本例中,它应该匹配方法和根 (‘/’) 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 = 'newbiego') { return $name;});

上面的例子检查值是否匹配到newbiego并相应地路由到定义的 URL。

命名路线


命名路由提供了一种创建路由的便捷方式,可以在路由定义上使用 name 方法指定路由的链接,以下代码展示了使用控制器创建命名路由的示例:

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

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