昨天寫了一篇Laravel的路由筆記,Laravel的路由還有很多功能,我今天繼續學一些路由的知識
重定向
我們可以使用redirect方法來實現重定向,我們來看一個簡單的重定向:
Route::get('/user/{id}', function ($id){ if ($id <= 0){ return redirect('/'); } else { return 'hello'; } });
當滿足一些邏輯后,使用redirect跳轉到別的視圖。
路由命名
路由命名就是為路由起一個名字,這樣我們在重定向時 可是使用路由的名字,就不用輸入那些復雜的路徑了。使用 as 關鍵字來為路由命名:
// 把第二個參數改成一個數組,里面指定一些鍵值配置,和一個閉包。 Route::get('/hello/laravel',['as' => 'laravel',function(){ return 'Hello Laravel'; }]); // 生成一個測試重定向的路由 Route::get('/test/redirect',function (){ // 我們在跳轉時,只需要在route方法中傳入路由名就可以實現跳轉。 return redirect()->route('laravel'); });
在實際開發中 我們或許會在重定向時為路由傳入參數,可以這么寫:
路由分組
路由分組給我們帶來了很多便利,當一些路由具有相同的屬性時,我們可以使用路由分組將他們包含起來,路由的屬性有:
- 中間件
- 路由前綴
- 子域名
- 命名空間
其中中間件和命名空間在之后的章節中做記錄,我們先來看看路由前綴和子域名的使用。
子域名
子域名我們可以使用domain來聲明:
// 定義一個路由分組,domain傳進一個參數: Route::group(['domain'=>'{service}.laravel.app'], function (){ Route::get('/write/laravel', function ($service){ return "Write FROM {$service}.laravel.app"; }); Route::get('/update/laravel', function ($service){ return "Update FROM {$service}.laravel.app"; }); });
當我們在瀏覽器中訪問:http://write.laravel.app:8000/write/laravel 時,則會輸出:
Write FROM write.laravel.app
當我們訪問:http://update.laravel.app:8000/update/laravel 時,輸出:
Update FROM update.laravel.app
注意:我們要讓子域名生效 需要在hosts文件中綁定IP地址。
路由前綴
我們使用prefix來指定路由前綴:
Route::group(['prefix' => 'laravel'], function (){ Route::get('/write', function (){ return 'Write laravel'; }); Route::get('/update', function (){ return 'Update laravel'; }); });
這樣的話我們只需要訪問:localhost:8000/laravel/write 和 localhost:8000/laravel/update 即可。
有些時候 我們還可以指定帶參數的prefix:
Route::group(['prefix' => 'laravel/{version}'], function (){ Route::get('/write', function ($version){ return 'Write laravel' . $version; }); Route::get('/update', function ($version){ return 'Update laravel' . $version; }); });