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

路由定義

注冊路由規則

路由(you)注冊(ce)可以(yi)采用方法(fa)動態(tai)單個和批量注冊(ce),也可以(yi)直接定義路由(you)定義文件的(de)方式進(jin)行集(ji)中(zhong)注冊(ce)。

動態注冊

路由定義采用\think\Route類的rule方法注冊,通常是在應用的路由配置文件application/route.php進行注冊,格式是:

Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)');

例(li)如注(zhu)冊(ce)如下路由規則:

use think\Route;
// 注冊路由到index模塊的News控制器的read操作
Route::rule('new/:id','index/News/read');

我們訪問:

http://serverName/new/5

ThinkPHP5.0的(de)路由規則定義是從根目錄開始,而(er)不是基(ji)于模(mo)塊名的(de)。

會自動路由到(dao):

http://serverName/index/news/read/id/5

并且原來的訪問地址(zhi)會自動失效(xiao)。

路(lu)由表達式(第一個參數)支持定(ding)義命名(ming)標識,例(li)如:

// 定義new路由命名標識
Route::rule(['new','new/:id'],'index/News/read');

注(zhu)意(yi),路由命(ming)名(ming)標識必(bi)須唯一,定義后可以(yi)用于URL的快速生(sheng)成(cheng)。

可以(yi)在(zai)rule方法中指定請求類(lei)型(xing),不指定的話(hua)默認為(wei)任何請求類(lei)型(xing),例如:

Route::rule('new/:id','News/update','POST');

表(biao)示定義的(de)路由規則在POST請求下才有效。

請(qing)求類型(xing)包括:

類型 描述
GET GET請求
POST POST請求
PUT PUT請求
DELETE DELETE請求
* 任何請求類型

注(zhu)意:請求類型參數必(bi)須(xu)大寫。

 系統提供了為不(bu)同的(de)請求類(lei)型(xing)定義(yi)路由規則的(de)簡化(hua)方法(fa),例如:

Route::get('new/:id','News/read'); // 定義GET請求路由規則
Route::post('new/:id','News/update'); // 定義POST請求路由規則
Route::put('new/:id','News/update'); // 定義PUT請求路由規則
Route::delete('new/:id','News/delete'); // 定義DELETE請求路由規(gui)則
Route::any('new/:id','News/read'); // 所有請求都支(zhi)持的路由規則

如果要定義get和(he)post請求支(zhi)持的路由(you)規則(ze),也可以用:

Route::rule('new/:id','News/read','GET|POST');

我們也可以批量注冊路由規則,例如:

Route::rule(['new/:id'=>'News/read','blog/:name'=>'Blog/detail']);
Route::get(['new/:id'=>'News/read','blog/:name'=>'Blog/detail']);
Route::post(['new/:id'=>'News/update','blog/:name'=>'Blog/detail']);

注(zhu)冊多個路由規(gui)(gui)則(ze)后,系統會依次遍歷注(zhu)冊過的滿足請求類型的路由規(gui)(gui)則(ze),一旦匹配到正確(que)的路由規(gui)(gui)則(ze)后則(ze)開(kai)始(shi)調用控制器的操作方法,后續規(gui)(gui)則(ze)就不再檢測。

路由表達式

路由表達式統一(yi)使字(zi)符串(chuan)定(ding)義,采用規則定(ding)義的方(fang)式。

正則路由定義功(gong)能已經廢除,改由變量(liang)規則定義完成(cheng)。

規則表達式

規則表(biao)達式(shi)通常包含靜態(tai)地址和(he)動態(tai)地址,或者兩種地址的(de)結合,例如下(xia)面(mian)都屬于有效的(de)規則表(biao)達式(shi):

'/' => 'index', // 首頁訪問(wen)路由
'my'        =>  'Member/myinfo', // 靜態地址路由
'blog/:id'  =>  'Blog/read', // 靜(jing)態地址(zhi)和動態地址(zhi)結合(he)
'new/:year/:month/:day'=>'News/read', // 靜態地址和(he)動態地址結合
':user/:blog_id'=>'Blog/read',// 全(quan)動(dong)態地址

規則表達式的定義以/為參數分割符(無論你的PATH_INFO分隔符設置是什么,請確保在定義路由規則表達式的時候統一使用/進(jin)行URL參(can)數分割)。

每個參(can)數中以“:”開頭的參(can)數都表示動(dong)態變(bian)量,并且會自動(dong)綁定到操作方法的對應參(can)數。

可選定義

支(zhi)持對路由參數的可選定義(yi),例如:

'blog/:year/[:month]'=>'Blog/archive',

[:month]變量用[ ]包含起來后就表(biao)示(shi)該變量(liang)是路由匹配的可(ke)選(xuan)變量(liang)。

以上定(ding)義(yi)路(lu)由規則(ze)后,下面的URL訪問地址都(dou)可以被(bei)正確的路(lu)由匹配:

http://serverName/index.php/blog/2015
http://serverName/index.php/blog/2015/12

采用可(ke)選(xuan)變量定義后,之(zhi)前需要定義兩個或者多個路(lu)(lu)由規則才能處理的情況可(ke)以合并為一個路(lu)(lu)由規則。

可選參(can)數只能(neng)放到路由(you)規則的最(zui)后,如(ru)果(guo)在中間使用了可選參(can)數的話(hua),后面的變(bian)量都(dou)會變(bian)成(cheng)可選參(can)數。

完全匹配

規則匹配檢測的時候只是對URL從頭開始匹配,只要URL地址包含了定義的路由規則就會匹配成功,如果希望完全匹配,可以在路由表達式最后使用$符號,例如:

'new/:cate$'=> 'News/category',
http://serverName/index.php/new/info

會匹配(pei)成功(gong),而

http://serverName/index.php/new/info/2 

則(ze)不會匹配(pei)成功。

如果是采用

'new/:cate'=> 'News/category',

方式定義的話,則兩種方式的URL訪問都可以匹配成功。

如(ru)果你希望所(suo)有的路(lu)由定義(yi)都是完全(quan)匹配(pei)的話(hua),可(ke)以直接配(pei)置(zhi)

// 開啟路由(you)定義的全局(ju)完全匹配(pei)
'route_complete_match'  =>  true,

當開啟全局(ju)完(wan)全匹配的時候,如果(guo)個別路由(you)不需(xu)要(yao)使用完(wan)整匹配,可以添加路由(you)參數覆蓋定義:

Route::rule('new/:id','News/read','GET|POST',['complete_match' => false]);

額外參數

在路(lu)由跳轉(zhuan)的(de)(de)時候(hou)支持額(e)外(wai)傳入(ru)參(can)數對(dui)(額(e)外(wai)參(can)數指的(de)(de)是不在URL里面的(de)(de)參(can)數,隱式傳入(ru)需要(yao)的(de)(de)操作中,有時候(hou)能夠起到(dao)一定的(de)(de)安全防護作用,后(hou)面我們會提到(dao))。例如:

'blog/:id'=>'blog/read?status=1&app_id=5',

上面的路由規則定義中額外參數的傳值方式都是等效的。statusapp_id參數都是(shi)URL里(li)面不存(cun)在的(de),屬(shu)于(yu)隱(yin)式(shi)傳值,當然(ran)并不一定需(xu)要(yao)用(yong)到,只是(shi)在需(xu)要(yao)的(de)時候可以使(shi)用(yong)。

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

文檔
目錄

深色
模(mo)式

切換
寬度