首頁  >  文章  >  後端開發  >  Laravel 514 + Bootstrap 334 筆記二:Laravel 路由

Laravel 514 + Bootstrap 334 筆記二:Laravel 路由

WBOY
WBOY原創
2016-07-30 13:31:50959瀏覽

1 路由機制

MVC中路由是一個非常重要的功能,其作用是:
A.根據用戶訪問(URL)匹配傳入的請求及請求附帶的參數;
B.請求映射Controller的Action方法,並把參數傳入;
C.返回Action方法處理結果;
下圖以簡單的形式表示一個用戶請求:

的路由

在Laravel 5.1.4中,路由設定檔是 app/Http/routes.php。

2.1 直接傳回字串的路由

在原有的程式碼後面追加如下程式碼段:

Route::get('/hw', function () {
    return 'Hello World';
});

開啟瀏覽器存取:http://localhost:801/hw,如下圖示:

2.2 返回視圖的路由

在上面的程式碼中再追加如下程式碼區:

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

在目錄resources/views下建立視圖檔:home.php,內容如下:在目錄resources/views下建立視圖檔案:home.php,內容如下:home.

<html>
<body>
<h1>home</h1>
</body>
</html>
開啟瀏覽器存取:http://localhost:801/home

如果上例的程式碼中需要傳送參數給檢視頁呢?修改我們的路由代碼:

Route::get('/home', function () {
    return view('home', ['name' => '张三']);
});
修改視圖程式碼:
<html>
<body>
[<?php echo $name; ?>],您好!
</body>
</html>
再看看訪問的效果:

如果視圖太多,一般是按模組甚至按功能存放的,在resources/views目錄下依次新建目錄:public/demo,然後把home.php移到該目錄中。

修改上例中的路由代碼為:

Route::get('/home', function () {
    return view('public.demo.home', ['name' => '张三']);
});
再次造訪還是能正常開啟頁面的。 2.3 路由參數

在前文已經說過,路由可以匹配出用戶的請求參數,那如何匹配呢?在上例的路由檔案中追加程式碼段:

Route::get('user/{name}', function($name) {
    return '用户姓名:'.$name;
});
開啟瀏覽器存取:http://localhost:801/user/jack

呢?修改路由代碼:

Route::get('user/{name}/{age}', function($name,$age) {
    return '用户姓名:'.$name.',年龄:'.$age;
});
開啟瀏覽器存取:http://localhost:801/user/jack/23

假如age參數不是必須的呢?再次修改路由代碼:
Route::get('user/{name}/{age?}', function($name,$age=null) {
    return '用户姓名:'.$name.',年龄:'.$age;
});

訪問位址:http://localhost:801/user/jack

2.4 路由參數的限制

在正常情況下,用戶存取的某些參數是一定有一定參數的規則,例如讀取用戶資訊時的用戶ID可能是數字,修改新聞資訊時的新聞ID可能是GUID等等。

修改routes.php文件,追加以下代碼:

Route::get('new/{id}', function($id)
{
    return '新闻ID:'.$id;
})->where('id', '[0-9]+');

打開瀏覽器訪問 http://localhost:801/new/3 是這樣的:

可存取 http://localhost:801/new/abc 時則提供頁面不存在:


,修改上例的路由代碼:

Route::get('new/{id}/{title}', function($id,$title)
{
    return '新闻ID:'.$id.',新闻标题:'.$title;
})->where(['id' => '[0-9]+', 'title' => '[a-z]+']);
訪問效果這裡就不示範了。

另外,我們可以設定全域的限制條件,開啟檔案:app/Providers/RouteServiceProviders.php,修改boot方法如下:

    public function boot(Router $router)
    {
        //
        $router->pattern('id', '[0-9]+');
        parent::boot($router);
    }
修改上例中的路由代碼為:

Route::get('new/{id}', function($id)
{
    return '新闻ID:'.$id;
});
訪問效果和上例是一樣的,這裡不在示範。 2.5 取得路由參數

在routes.php中可以取得路由參數,以此來做其他的操作,修改上例的路由代碼:
Route::get('new/{id}', function(Request $request, $id)
{
    if ($request->route('id') == '2')
    {
        return '新闻ID是2';
    }else{
        return '新闻ID不是2,值是:'.$id;
    }
});

?後插入新的一行:

🎜🎜🎜🎜
use Illuminate\Http\Request;
🎜🎜🎜打開瀏覽器,分別訪問 http://localhost:801/new/2 和 可看到不同的頁面效果。 🎜🎜🎜路由還有很多複雜的功能,有待研究。 🎜🎜🎜版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 🎜🎜 🎜 以上就介紹了Laravel 514 + Bootstrap 334 筆記二:Laravel 路由,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜 🎜 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn