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/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教程有興趣的朋友有所幫助。 🎜 🎜 🎜