《PHP應用:跟我學Laravel之路由》要點:
本文介紹了PHP應用:跟我學Laravel之路由,希望對您有用。如果有疑問,可以聯系我們。
基本路由PHP實戰
應用中的大多數路都會定義在 app/routes.php 文件中.最簡單的Laravel路由由URI和閉包回調函數組成.PHP實戰
基本 GET 路由PHP實戰
基本 POST 路由PHP實戰
注冊一個可以響應任何HTTP動作的路由PHP實戰
僅支持HTTPS的路由PHP實戰
實際開發中經常需要根據路由生成 URL,URL::to辦法就可以滿足此需求:PHP實戰
$url = URL::to('foo');PHP實戰
路由參數PHP實戰
可選路由參數PHP實戰
帶有默認值的可選路由參數PHP實戰
用正則表達式限定的路由參數PHP實戰
Route::get('user/{id}', function($id)
{
??? //
})
->where('id', '[0-9]+');
PHP實戰
傳遞參數限定的數組PHP實戰
當然,必要的時候你還可以傳遞一個包括參數限定的數組作為參數:PHP實戰
定義全局模式PHP實戰
如果希望在全局范圍用指定正則表達式限定路由參數,可以使用 pattern 辦法:PHP實戰
Route::get('user/{id}', function($id)
{
??? // Only called if {id} is numeric.
});
PHP實戰
拜訪路由參數PHP實戰
如果想在路由范圍外拜訪路由參數,可以使用 Route::input 方法:PHP實戰
路由過濾器PHP實戰
路由過濾器提供了非常方便的方法來限制對應用程序中某些功能拜訪,例如對于需要驗證才能拜訪的功能就非常有用.Laravel框架自身已經提供了一些過濾器,包括 auth過濾器、auth.basic過濾器、guest過濾器以及csrf過濾器.這些過濾器都定義在app/filter.php文件中.PHP實戰
定義一個路由過濾器PHP實戰
如果從路由過濾器中返回了一個response,那么該response將被認為對應的是此次request,路由將不會被執行,而且,此路由中所有定義在此過濾器之后的代碼也都不會被執行.PHP實戰
為路由綁定過濾器PHP實戰
將過濾器綁定為控制器ActionPHP實戰
為路由綁定多個過濾器PHP實戰
指定過濾器參數PHP實戰
Route::get('user', array('before' => 'age:200', function()
{
??? return 'Hello World';
}));
PHP實戰
所有其后的過濾器將接收到 $response作為第三個參數:PHP實戰
基于模式的過濾器PHP實戰
你也可以指針對URI為一組路由指定過濾器.PHP實戰
Route::when('admin/*', 'admin');
PHP實戰
上述案例中,admin過濾器將會應用到所有以admin/開頭的路由中.星號是通配符,將會匹配任意多個字符的組合.PHP實戰
還可以針對HTTP動作限定模式過濾器:PHP實戰
過濾器類PHP實戰
過濾器的高級用法中,還可以使用類來替代閉包函數.由于過濾器類是通過IoC container實現解析的,所有,你可以在這些過濾器中利用依賴注入(dependency injection)的辦法實現更好的測試能力.PHP實戰
定義一個過濾器類PHP實戰
??? public function filter()
??? {
??????? // Filter logic...
??? }PHP實戰
}
PHP實戰
注冊過濾器類PHP實戰
命名路由PHP實戰
重定向和生成URL時,使用命名路由會更便利.你可以為路由指定一個名字,如下所示:PHP實戰
還可以為 controller action指定路由名稱:PHP實戰
現在,你可以使用路由名稱來創建URL和重定向:PHP實戰
$redirect = Redirect::route('profile');
PHP實戰
可以使用currentRouteName辦法來獲取當前運行的路由名稱:PHP實戰
路由組PHP實戰
有時你可能必要為一組路由應用過濾器.使用路由組就可以避免單獨為每個路由指定過濾器了:PHP實戰
??? Route::get('user/profile', function()
??? {
??????? // Has Auth Filter
??? });
});
PHP實戰
子域名路由PHP實戰
Laravel中的路由功能還支持通配符子域名,你可以在域名中指定通配符參數:PHP實戰
注冊子域名路由PHP實戰
??? Route::get('user/{id}', function($account, $id)
??? {
??????? //
??? });PHP實戰
});
PHP實戰
路由前綴PHP實戰
可以通過prefix屬性為組路由設置前綴:PHP實戰
為路由組設置前綴PHP實戰
??? Route::get('user', function()
??? {
??????? //
??? });PHP實戰
});
PHP實戰
路由與模型綁定PHP實戰
模型綁定,為在路由中注入模型實例提供了便捷的途徑.例如,你可以向路由中注入匹配用戶ID的整個模型實例,而不是僅僅注入用戶ID.首先,使用 Route::model 辦法指定要被注入的模型:PHP實戰
將參一個模型PHP實戰
Route::model('user', 'User');
然后,定義一個包括{user}參數的路由:PHP實戰
由于我們已將{user}參數綁定到了User模型,因此可以向路由中注入一個User實例.例如,對profile/1的拜訪將會把ID為1的User實例注入到路由中.PHP實戰
注意: 如果在數據庫中無法匹配到對應的模型實例,404錯誤將被拋出.
如果你希望自定義"not found"行為,可以通過傳遞一個閉包函數作為 model 辦法的第三個參數:PHP實戰
如果你想自己實現路由參數的解析,只需使用Route::bind辦法即可:PHP實戰
拋出 404 差錯PHP實戰
有兩種從路由中手動觸發404錯誤的辦法.首先,你可以使用App::abort辦法:PHP實戰
其次,你可以拋出Symfony\Component\HttpKernel\Exception\NotFoundHttpException異常.PHP實戰
更多關于處理404異常以及差錯發生時自定義response的信息可以查看差錯文檔.PHP實戰
控制器路由PHP實戰
Laravel不光提供了利用閉包函數處置路由的功能,還可以路由到控制器,甚至支持創建 resource controllers.PHP實戰
《PHP應用:跟我學Laravel之路由》是否對您有啟發,歡迎查看更多與《PHP應用:跟我學Laravel之路由》相關教程,學精學透。維易PHP學院為您提供精彩教程。