### 多级控制器
当一个模块下面有较多的控制器之后,就会涉及到控制器分组和分级的管理需求,毕竟一个目录下面一大堆的控制器看着也难受。
简单来说就是把原来controller目录下面的控制器分别放到不同的子目录下面去,并且在子目录下面仍然还可以再划分子目录,对于这种方式的控制器我们称之为多级控制器,多级控制器就是一种明确的从属关系的控制器定义和访问,举个例子如果我们要区分访问前后台的用户操作,控制器定义如下:
后台User控制器:
~~~
<?php
namespace app\index\controller\admin;
class User
{
public function index()
{
return '后台用户';
}
}
~~~
前台User控制器:
~~~
<?php
namespace app\index\controller\home;
class User
{
public function index()
{
return '前台用户';
}
}
~~~
前后台访问的URL看起来是这样:
~~~
http://tp5.com/index/home.user/index
http://tp5.com/index/admin.user/index
~~~
home.user和admin.user就表示一个多级控制器调用,如果有更多的控制器层级,就可以用admin.user.blog,如果有强迫症觉得点号分割不舒服的话,除了使用路由之外,还可以使用控制器自动搜索功能。
以上面的两个控制器为例,我们在应用配置中修改如下参数:
~~~
// 开启控制器自动搜索定位
'controller_auto_search' => true,
~~~
接下来我们访问
`http://tp5.com/index/home/user/index`
系统会自动在控制器目录下面搜索控制器类文件是否存在,搜索顺序依次为
~~~
application/index/controller/Home.php
application/index/controller/home/User.php
~~~
直到搜索到实际的控制器类文件就会停止搜索,因为实际存在User.php控制器类,然后调用index操作方法,所以页面会输出:
`前台用户`