# 配置省份二级,城市三级目录
Thinkphp 提供多种路由配置方式,有静态路由,正则路由,但这些都是比较简单的,并不能配置省份二级目录,城市三级目录
于是我们只有自定义路由规则:根据thinkphp的路由配置中的闭包支持
格式:
广东:www.xxx.com/gd
广东广州:www.xxx.com/gd/gz
具体配置如下:
在数据库的省表和市表都保存了 目录名称,字段名称为domain
~~~
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES'=>array(
// 匹配省 只接收一个省份参数
':province$'=>function($province){
if($province) {
$provinceModel = M('Province');
$pros = $provinceModel->where(array('domain' => $province))->find();
if($pros){
$_SERVER['PATH_INFO'] = 'BtrBusiness/index/province/'.$province;
return false;
}else{
return false;
}
}else
return false;
},
//只接收省份城市两个参数
':province/:city$'=>function($province,$city){
if($province) {
$provinceModel = M('Province');
$pros = $provinceModel->field(array('id','name'))->where(array('domain' => $province))->find();
if($pros){
if($city){
$cityModel=M('City');
$cityinfo = $cityModel->field(array('id','name'))->where(array('domain' => $city,'province_id'=>$pros['id']))->find();
if($cityinfo){
$_SERVER['PATH_INFO'] = 'BtrBusiness/index/province/'.$province."/city/".$city;
return false;
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}else
return false;
},
)
~~~
之所以从数据库查的,原因是我们不可能配置对所有省份,城市,这是吃力不讨好的,所以只能让其自动匹配