最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Laravel Route 篇

XAMPP下载 admin 1173浏览 0评论
 前言
由於 Laravel 的官方手冊講的雖然很多,但範例說明是在有夠少,我把我自己讀完之後整理一些用法重新闡述一下他的功能,希望大家可以瞭解的更清楚。

支援多種網路請求
可以利用 array 將請求方法放在一起就可以把不同請求放在同一個 route 處理

Route::match([‘get’, ‘post’], ‘/’ , function() {

});
甚至可以直接用 any 代表所有請求方法

Route::any([‘/’ , function() {

});
利用 route 傳值
方法一:
Route::get(‘/singledataview’, function() {
return view(‘singleDataView’, [‘name’ => ‘Kao’]);
});

Route::get(‘/multidataview’, function() {
return view(‘multiDataView’, [‘name’ => ‘SoJ’, ‘age’ => 30]);
});

Route::get(‘/arraydataview’, function () {
return view(‘arrayDataView’, [‘data’ => [‘Kao’, 30]]
});
方法二:
Route::get(‘/’, function() {
//單筆資料
return view(‘welcome’)->with(‘name’, ‘Kao’);
//多筆資料
return view(‘welcome’)->with([‘name’ => ‘Kao’, ‘age’ =>30]);
//回傳array
return view(‘welcome’)->with(‘data’, [‘Kao’, 30, ‘value3’]);
});
方法三:(自帶變數)
Route::get(‘/’, function() {

$name = ‘Kao’;
return view(‘welcome’, [‘name’ => $name]);
//’name’是 welcome 裡的變數名,$name 是 route 裡的變數名,當然 $name 也可以是 array 資料

//example
$data = [
‘Go to the store’,
‘Clean the house’,
‘Finish my homework’
];
return view(‘welcome’, [‘data’ => $data]);
});

Route::get(‘/’, function () {

$name = ‘Kao’;
return view(‘welcome’, compact(‘name’));

});
可選值的參數 (Optional Parameter)
這個方法是可以從 URI 取得特定位置的字串,作為 route 參數使用。除此之外,你甚至可以把那個參數定義成 optional (可選值:亦即可有可無),那麼你在 function 中帶入的參數就可以預設為 null。

Route::get(‘user/{name?}’, function($name = null) {
});
假設有一個 URI 為: http://blog.test/kao

那麼 route 會取得 “kao” 這個字串存在變數 $name中,在 function 中將 $name = “kao” 當成參數帶入。

正規表示式的侷限 (Regular Expression Constraints)
這種做法常常拿來避免使用者刻意手動輸入 URI,導致 route 在讀取參數時,因參數格式錯誤而回饋錯誤訊息。
例如: id 本應是數字, 如果使用者刻意將 URI 該改成 kao123,那麼 route 會因為格式不符合正規表示式,而不會執行 function 內動作。

單一變數

Route::get(‘user/{name}’, function($name) {
//
})->where(‘name’, ‘[A-Za-z]+’);

Route::get(‘user/{id}’, function($id) {
//
})->where(‘id’, ‘[0-9]+’);
兩個以上的變數

Route::get(‘user/{id}/{name}’, function($id, $name) {
//
})->where([‘id’ => ‘[0-9]+’ , ‘name’ => ‘[A-Za-z]+’ ]);
全域侷限 (Global Constraints)
在 App\Providers\RouteServiceProvider.php 中

public function boot() {
Route::pattern(‘id’, ‘[0-9]+’);
parent::boot();
}
與資料模型綁定 (Route Model Binding)
由於 model 我還沒講到,這邊先簡單提一下這個使用方法。

這種使用方法有一個前提條件,就是 model 裡,已經有一個欄位名稱叫 ‘id’,Laravel 會依據 id 找到對應的 model 資料。

Route::get(‘api/users/{user}’, function (App\User $user) {
return $user->email;
});
假設有一個資料表如下

id name email
1 Kao 1@mail.com
2 SoJ 2@mail.com
那麼當 URI 為:http://blog.test/users/1

最終變數 $user 會是一個 object {“id”:1,”name”:”Kao”,”email”:”1@mail.com”}

转载请注明:XAMPP中文组官网 » Laravel Route 篇

您必须 登录 才能发表评论!