本系列文的環境狀態,可點擊此連結後花園環境參考
可以告訴我,如何才能找到你嗎?
你的位置在哪裡?是否存在著?
再見到你之前,有什麼考驗等著我?
路由就像是地址一樣,辨識需要傳送的位置在哪,以及需要使用的方式,有些是公開的,任何人都可前往,有些則需要再經過驗證,才能到某些特別的地方。
Route透過連線方法,一個 url 和一個 Closure (閉包),提供一個非常簡單且直覺的方式來定義路由
Route::get('foo', function () {
return 'Hello World';
});
常見的路由方法:
方法 | 用途 |
---|---|
GET | 取得資源,檢視 |
POST | 新增一筆資源 |
PUT | 更新一筆資源 |
DELETE | 刪除一筆資源 |
有時可能需要從 URI 段中取些字段,例.可能從 url 中獲取使用者的 ID ,透過定義路由參數取得。
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
也可以根據自己的路由,定義其他數量的路由參數
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
路徑參數需由{}包起來,只由字母組成,不含-
字元,使用_
取代-
。路由參數根據其順序注入到路由回傳或控制器中。
需指定路由參數,但參數存在是選擇性的,可有可無,可藉由在參數名稱後加上?
達成。記得給該路由的對應參數一個預設值:
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = 'Joker') {
return $name;
});
替路由建立識別名稱,增加識別性,並利於產生網址或重新導向。
可以透過 name
連結爲路由定義加上名稱:
Route::get('user/profile', function () {
//
})->name('profile');
爲控制器做指定路由名稱:
Route::get('user/profile', 'UserController@showProfile')->name('profile');
生成 url 到命名路由,給定路由名稱後,可在使用全域的 route
時,產生 url 或重新導向時的路由名稱
// 產生 URL...
$url = route('profile');
// 產生重新導向...
return redirect()->route('profile');
如果有定義參數,可以把參數傳給 route
的第二個參數,提供的參數會自動插入到 url 中正確的位置:
Route::get('user/{id}/profile', function ($id) {
//
})->name('profile');
$url = route('profile', ['id' => 1]);
prefix可以用來為群組中的每個路由加上 URI 前綴。例如,想在群組中所有的路由 URI 都加上 flower 前綴:
Route::prefix('flower')->group(function () {
Route::get('users', function () {
// 符合 「/flower/users」 URL
});
});
指定中介層到群組內例的路由,可以群組之前使用的中介方法,會依照陣列中的順序執行:
Route::middleware(['one', 'two'])->group(function () {
Route::get('/', function () {
// 使用 one 和 two 中介層
});
Route::get('user/profile', function () {
// 使用 one 和 two 中介層
});
});
當專案的路由越來越多時,我們可以在 terminal 使用 artisan 指令,查看目前所有路由定義的請求方法、網址、別名、執行內容與中介層。
在terminal輸入下列另一指令,都可執行查詢路由表
$ php artisan route:list
$ php artisan r:l
想更詳細瞭解,可參考下列連結
❁ Laravel官網-Routing
❁ Laravel道場-路由
❁ 初心者之路#05 – Laravel Routing 路由控制
❁ 深入淺出 Laravel 路由執行原理
❁ Laravel 原碼閱讀指南 - 路由
❁ Laravel HTTP 基礎 Route
❁ Laravel 學習筆記(11) - Route 進階