laravel php配置,PHP Laravel框架路由配置及设置技巧全解
Laravel框架在PHP開發(fā)中使用十分廣泛,本文主要對Laravel框架中的路由設(shè)置作詳細(xì)的介紹,Laravel的路由配置非常靈活,如何設(shè)置好路由對PHP應(yīng)用來說也是相當(dāng)關(guān)鍵的。
基本路由
您的應(yīng)用程序的絕大多數(shù)路由將在 app/routes.php 文件中定義。Laravel 中最簡單的路由由一個 URI 和一個閉包調(diào)用組成。
基本 GET 路由
Route::get('/',function(){return'Hello World';});
基本 POST 路由
Route::post('foo/bar',function(){return'Hello World';});
注冊一個路由以響應(yīng)所有 HTTP 方法
Route::any('foo',function(){return'Hello World';});
強(qiáng)制一個路由必須通過 HTTPS 訪問
Route::get('foo',array('https',function(){return'Must be over HTTPS';}));
經(jīng)常您需要根據(jù)路由產(chǎn)生 URLs,您可以通過使用 URL::to 方法:
$url = URL::to('foo');
路由參數(shù)
Route::get('user/{id}',function($id){return'User '.$id;});
可選的路由參數(shù)
Route::get('user/{name?}',function($name = null){return$name;});
帶默認(rèn)值的可選的路由參數(shù)
Route::get('user/{name?}',function($name ='John'){return$name;});
帶正則表達(dá)式約束的路由
Route::get('user/{name}',function($name){//})->where('name','[A-Za-z]+');Route::get('user/{id}',function($id){//})->where('id','[0-9]+');
路由過濾器
路由過濾器提供了一種限制訪問指定路由的簡單的方法,這在您需要為您的站點(diǎn)創(chuàng)建需要認(rèn)證區(qū)域的時候非常有用。Laravel 框架中包含了一些路由過濾器,比如 auth 過濾器、auth.basic 過濾器、guest 過濾器、以及 csrf 過濾器。它們被存放在 app/filters.php 文件中。
定義一個路由過濾器
Route::filter('old',function(){if(Input::get('age') <200){returnRedirect::to('home');}});
如果一個響應(yīng)從一個路由過濾器中返回,這個響應(yīng)即被認(rèn)為是這個請求的響應(yīng),路由將不被執(zhí)行,任何關(guān)于這個路由的 after 過濾器也將被取消執(zhí)行。
為一個路由指定一個路由過濾器
Route::get('user',array('before'=>'old',function(){return'You are over 200 years old!';}));
為一個路由指定多個路由過濾器
Route::get('user',array('before'=>'auth|old',function(){return'You are authenticated and over 200 years old!';}));
指定路由過濾器參數(shù)
Route::filter('age',function($route, $request, $value){//});Route::get('user',array('before'=>'age:200',function(){return'Hello World';}));
當(dāng)路由過濾器接收到作為第三個參數(shù)的響應(yīng) $response:
Route::filter('log',function($route, $request, $response, $value){//});
基本路由過濾器的模式
您可能希望根據(jù) URI 為一組路由指定過濾器。
Route::filter('admin',function(){//});Route::when('admin/*','admin');
在上面的例子中,admin 過濾器將應(yīng)用帶所有以 admin/ 開頭的路由。星號作為一個通配符,將適配到所有字符的組合。
您也可以通過指定 HTTP 方法約束模式過濾器:
Route::when('admin/*','admin',array('post'));
過濾器類
對于高級的過濾器,您可以使用一個類代替閉包函數(shù)。因?yàn)檫^濾器類是位于應(yīng)用程序之外的 IoC 容器,您能夠在過濾器中使用依賴注入,更易于測試。
定義一個過濾器類
classFooFilter{publicfunctionfilter(){// Filter logic...}}
注冊一個基于類的過濾器
Route::filter('foo','FooFilter');
命名路由
命名路由在更易于在生成跳轉(zhuǎn)或 URLs 時指定路由。您可以像這樣為路由指定一個名字:
Route::get('user/profile',array('as'=>'profile',function(){//}));
您也可以為控制器的方法指定路由名字:
Route::get('user/profile',array('as'=>'profile','uses'=>'UserController@showProfile'));
現(xiàn)在您在生成 URLs 或跳轉(zhuǎn)的時候使用路由的名字:
$url = URL::route('profile');$redirect = Redirect::route('profile');
您可以使用 currentRouteName 方法獲取一個路由的名字:
$name = Route::currentRouteName();
路由組
有些時候您可能希望應(yīng)用過濾器到一組路由。您不必要為每個路由指定過濾器,可以使用路由組:
Route::group(array('before'=>'auth'),function(){Route::get('/',function(){// Has Auth Filter});Route::get('user/profile',function(){// Has Auth Filter});});
子域名路由
Laravel 路由也能夠處理通配符的子域名,并且從域名中獲取通配符參數(shù):
注冊子域名路由
Route::group(array('domain'=>'{account}.myapp.com'),function(){Route::get('user/{id}',function($account, $id){//});});
路由前綴
一組路由可以通過在屬性數(shù)組中使用 prefix 選項(xiàng)為路由組添加前綴:
為路由組添加前綴
Route::group(array('prefix'=>'admin'),function(){Route::get('user',function(){//});});
路由模型綁定
模型綁定提供了一個簡單的方法向路由中注入模型。比如,不僅注入一個用戶的 ID,您可以根據(jù)指定的 ID 注入整個用戶模型實(shí)例。首先使用 Route::model 方法指定所需要的模型:
為模型綁定一個變量
Route::model('user','User');
然后, 定義一個包含 {user} 參數(shù)的路由:
Route::get('profile/{user}',function(User $user){//});
因?yàn)槲覀円呀?jīng)綁定 {user} 參數(shù)到 User 模型,一個 User 實(shí)例將被注入到路由中。因此,比如一個 profile/1 的請求將注入一個 ID 為 1 的 User 實(shí)例。
注意: 如果在數(shù)據(jù)庫中沒有找到這個模型實(shí)例,將引發(fā)404錯誤。
如果您希望指定您自己定義的沒有找到的行為,您可以為 model 方法傳遞一個閉包作為第三個參數(shù):
Route::model('user','User',function(){thrownewNotFoundException;});
有時您希望使用自己的方法處理路由參數(shù),可以使用 Route::bind 方法:
Route::bind('user',function($value, $route){returnUser::where('name', $value)->first();});
引發(fā)404錯誤
有兩種方法在路由中手動觸發(fā)一個404錯誤。首先,您可以使用 App::abort 方法:
App::abort(404);
其次,您可以拋出一個 Symfony\Component\HttpKernel\Exception\NotFoundHttpException 的實(shí)例。
更多關(guān)于處理404異常和為這些錯誤使用使用自定義響應(yīng)的信息可以在 錯誤 章節(jié)中找到。
路由至控制器
Laravel 不僅允許您路由至閉包,也可以路由至控制器類,甚至允許創(chuàng)建 資源控制器.
總結(jié)
以上是生活随笔為你收集整理的laravel php配置,PHP Laravel框架路由配置及设置技巧全解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 获取signature,PHP开
- 下一篇: xp怎么改图标大小 XP如何修改图标大小