午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

路由參數

路由參數

路(lu)由(you)(you)參數是指可以設置(zhi)一些路(lu)由(you)(you)匹配(pei)的(de)(de)條(tiao)件(jian)參數,主要(yao)用(yong)于驗證當前(qian)的(de)(de)路(lu)由(you)(you)規(gui)則是否有效,主要(yao)包(bao)括(kuo):

參數 說明
method 請求類型檢測,支持多個請求類型
ext URL后綴檢測,支持匹配多個后綴
deny_ext URL禁止后綴檢測,支持匹配多個后綴
https 檢測是否https請求
domain 域名檢測
before_behavior 前置行為(檢測)
after_behavior 后置行為(執行)
callback 自定義檢測方法
merge_extra_vars 合并額外參數
bind_model 綁定模型(V5.0.1+
cache 請求緩存(V5.0.1+
param_depr 路由參數分隔符(V5.0.2+
ajax Ajax檢測(V5.0.2+
pjax Pjax檢測(V5.0.2+

V5.0.3+版本對ajax/pjax/https條件支持false

這些路由參數(shu)可以混合使用,只要有(you)任何一條參數(shu)檢(jian)查(cha)不(bu)通(tong)過,當前路由就不(bu)會(hui)生效,繼續檢(jian)測后面(mian)的路由規則。

請求類型

如果指定請求類型注冊路由的話,無需設置method請求類型參數。如果使用了rule或者any方法注冊路由,或者使用路由配置定義文件的話,可以單獨使用method參數(shu)進(jin)行請求類型檢測。

使用方法:

// 檢測路由(you)規則僅GET請求有效(xiao)
Route::any('new/:id','News/read',['method'=>'get']);
// 檢測路由(you)規(gui)則僅GET和POST請求有效
Route::any('new/:id','News/read',['method'=>'get|post']);

URL后綴

// 定(ding)義(yi)GET請求(qiu)路由規(gui)則(ze) 并設置(zhi)URL后(hou)綴為(wei)html的時候有效
Route::get('new/:id','News/read',['ext'=>'html']);

支持匹(pi)配多個后(hou)綴,例(li)如:

Route::get('new/:id','News/read',['ext'=>'shtml|html']);

可(ke)以設置禁(jin)止訪問的URL后綴,例如:

// 定義GET請求路由規則 并設置禁止URL后綴為png、jpg和(he)gif的訪(fang)問
Route::get('new/:id','News/read',['deny_ext'=>'jpg|png|gif']);

V5.0.7版本以上,extdeny_ext參數(shu)允許設(she)置為空,分(fen)別表示不允許任何后綴以(yi)及必須(xu)使用后綴訪問。

域名檢測

支持使(shi)用完整域名或者(zhe)子域名進行(xing)檢測(ce),例如:

// 完整域名檢(jian)測 只在news.thinkphp.cn訪問(wen)時路(lu)由有效(xiao)
Route::get('new/:id','News/read',['domain'=>'news.thinkphp.cn']);
// 子域(yu)名(ming)檢測
Route::get('new/:id','News/read',['domain'=>'news']);

HTTPS檢測

支持檢測當前是否HTTPS訪問(wen)

Route::get('new/:id','News/read',['https'=>true]);

前置行為檢測

支持使用行(xing)為(wei)對(dui)路由進行(xing)檢測是否匹配,如果行(xing)為(wei)方法(fa)返(fan)回false表示當前路由規則無效。

Route::get('user/:id','index/User/read',['before_behavior'=>'\app\index\behavior\UserCheck']);

行為(wei)類定(ding)義如下:

namespace app\index\behavior;

class UserCheck
{
    public function run()
    {
        if('user/0'==request()->url()){
            return false;
        }
    }
}

后置行為執行

可以為某個路由(you)或者(zhe)某個分組路由(you)定義(yi)后置行(xing)為執行(xing),表(biao)示當路由(you)匹配成功后,執行(xing)的行(xing)為,例如(ru):

Route::get('user/:id','User/read',['after_behavior'=>'\app\index\behavior\ReadInfo']);

其中(zhong)\app\index\behavior\ReadInit 行為類定義(yi)如下:

namespace app\index\behavior;

use app\index\model\User;

class ReadInfo {
    public function run(){
    	$id = request()->route('id');
		request()->user = User::get($id);
    }
}

如果成功匹配到new/:id路由后,就會執(zhi)行(xing)行(xing)為類的(de)run方法,參數是(shi)路由地(di)址,可以動態改變。

Callback檢測

也可以支(zhi)持使(shi)用函數檢測路由,如(ru)果函數返(fan)回false則(ze)表(biao)示當前路由規則(ze)無效,例如(ru):

Route::get('new/:id','News/read',['callback'=>'my_check_fun']);

合并額外參數

通(tong)常用于(yu)完(wan)整(zheng)匹配的(de)情況,如果(guo)有額外的(de)參數則合并作為(wei)變量(liang)值,例如:

Route::get('new/:name$','News/read',['merge_extra_vars'=>true]);

會被匹配到,并且name變量的值為 thinkphp/hello

配置文件中添加路由參數

如果使用配置文(wen)件(jian)的話(hua),可(ke)以使用:

return [
    'blog/:id'   => ['Blog/update',['method' => 'post','ext'=>'html|shtml']],
];

路由綁定模型(V5.0.1

可以在當前路由(you)匹配后綁定模型(xing),后面則同(tong)過方(fang)法的對象自動注入(ru)來(lai)獲取。

Route::get('new/:name$','News/read',['bind_model'=>['User','name']]);

更多細節可以參考請(qing)求->依賴注入(ru)。

緩存路由請求

可以對當前的路由請求(qiu)進(jin)行緩存處(chu)理,例(li)如:

Route::get('new/:name$','News/read',['cache'=>3600]);

表示對當前(qian)路(lu)由(you)請求緩存3600秒(miao)。

文檔最后更新時間:2018-04-25 18:44:45

文檔
目錄

深色
 模(mo)式(shi)

切換
寬度