ThinkPhp5多级控制器和自动定位控制器结合使用

在thinkhphp5中支持任意层次级别的控制器,并且支持路由。很多人看了肯定会说有什么适用场景,有什么用?其实,在写项目的时候,控制器类写的多了, 自然而然的就想会分层。这样有利于控制器的管理。这里给大家讲解下具体如何使用,有一些细节部分需要注意。

模型分层

正常我们写控制器是写在controller目录下。比如一个index控制器,那么控制器的路径为:

/application/admin/controller/Index.php

注:这里演示是在admin模块下

现在我们增加一个api层。里面有一个Blog控制器以及index方法。那么Blog文件的目录为:

/application/admin/controller/api/Blog.php

ThinkPhp5多级控制器和自动定位控制器结合使用_第1张图片

访问Blog控制器的url就为:

http://域名/admin.php/admin/api.blog/index

使用 . 来做分隔符。不过这样看的话总是感觉不够好,能不能进行优化一下?那就继续往下看。

自动定位控制器

官方提供多级控制器的同时也提供了自动定位的方法。只需要设置下面的配置:

'controller_auto_search'=>true

那么使用下面的url也能达到上面的效果;

http://域名/admin.php/admin/api/blog/index

这里有个细节要注意下,这个配置要写到application/config.php文件中才生效,如果是写在模块下的配置文件中是无效的。比如我上面的admin模块。将配置写到application/admin/config.php这个文件中是没有效果的。原因是框架在运行的时候会先加载config.php里的配置,然后识别出模块后才会加载模块下的config文件。

你可能感兴趣的:(php,ThinkPHP)