批量注冊
批量注冊路由規(guī)則可以使用兩種方式,包括方法注冊和路由配置定義。
批量注冊
如果不希望一個個注冊,可以使用批量注冊,規(guī)則如下:
Route::rule([
'路由規(guī)則1'=>'路由地址和參數(shù)',
'路由規(guī)則2'=>['路由地址和參數(shù)','匹配參數(shù)(數(shù)組)','變量規(guī)則(數(shù)組)']
...
],'','請求類型','匹配參數(shù)(數(shù)組)','變量規(guī)則');
如果在外面和規(guī)則里面同時傳入了匹配參數(shù)和變量規(guī)則的話,路由規(guī)則定義里面的最終生效,但請求類型參數(shù)以最外層決定,例如:
Route::rule([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['ext'=>'shtml'],['id'=>'\d{4}']],
...
],'','GET',['ext'=>'html'],['id'=>'\d+']);
以上的路由注冊,最終blog/:id
只會在匹配shtml后綴的訪問請求,id變量的規(guī)則則是 \d{4}
。
如果不同的請求類型的路由規(guī)則是一樣的,為了避免數(shù)組索引沖突的問題,請使用單獨(dú)的請求方法定義路由。
同樣,我們也可以使用其他幾個注冊方法進(jìn)行批量注冊。
// 批量注冊GET路由
Route::get([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/edit',[],['id'=>'\d+']]
...
]);
// 效果等同于
Route::rule([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/edit',[],['id'=>'\d+']]
...
],'','GET');
定義路由配置文件
除了支持動態(tài)注冊,也可以直接在應(yīng)用目錄下面的route.php
的最后通過返回數(shù)組的方式直接定義路由規(guī)則,內(nèi)容示例如下:
return [
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];
路由配置文件定義的路由規(guī)則效果和使用any
注冊路由規(guī)則一樣。
路由動態(tài)注冊和配置定義的方式可以共存,例如:
use think\Route;
Route::rule('hello/:name','index/index/hello');
return [
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];
默認(rèn)情況下,只會加載一個路由配置文件route.php
,如果你需要定義多個路由文件,可以修改route_config_file
配置參數(shù),例如:
// 定義路由配置文件(數(shù)組)
'route_config_file' => ['route', 'route1', 'route2'],
如果存在相同的路由規(guī)則,一樣可以參考前面的批量注冊方式進(jìn)行定義。
由于檢測機(jī)制問題,動態(tài)注冊的性能比路由配置要高一些,尤其是多種請求類型混合定義的時候。
文檔最后更新時間:2018-04-25 18:15:42
未解決你的問題?請到「問答社區(qū)」反饋你遇到的問題