ThinkPHP5.1 多级控制器(分层控制器)的理解和使用

(TP)ThinkPHP5.1 多级控制器(分层控制器)的理解和使用

ThinkPHP5.1开发手册:访问控制器层(controller),也称主控制器可以通过url访问。但是分层控制器(多级控制器)则不能通过Url直接访问。

控制器定义
//application\index\controller\Index.php(application\模块\控制器\操作(类库))
namespace app\controller\index
class Index{
	public function index(){
	return "index";	
	}
}

或者:

//application\index\controller\index.php(application\模块\控制器\操作(类库))
namespace app\controller\index
use think\Controller;            //引入TP控制器基类,首字符大写
class Index extends Controller{  //调用基类,首字符大写
	public function index(){
		return "index";
	}
}
控制器中方法的使用

控制器文件一般放在:app/module/controller 下,控制器方法的引用遵从:[ 模块/控制器/操作 ] 三级模式来使用。
如:

url: /public/index/index/index/index  
//提示:/public/模块/控制器/类库(操作)/方法
多层(分层)控制器中方法如何调用?

有些时候需要再主控制器controller下再建立一个文件夹,如:admin,那么,admin目录下的操作及方法如何调用呢?能直接使用url方式一层层调用吗?答案是不行,TP严格遵从 [ 模块/控制器/操作 ] 三级模式使用。
正确形式应该如下:
遇到url、链接、路由地址等表示控制器的都可以 . 来链接

如:url(‘index/aa.bb.user/add’)、https://www.xxx.com/index.php/index/aa.bb.user/add.html

//application\index\controller\admin\Index.php多级控制器 
//controller/aa/bb/User.php 
Route:rule('adduser/:id','index/aa.bb.user/add');
namespace app\index\controller\admin;
class Index 
{
    public function index()
    {
          //模板渲染
          $view = new View();//必须申明use think\View; 
          return $view->fetch('index');
          //或者
          return view('index');

    }
}

或者:

namespace app\index\controller\admin;
use think\Controller;
class Index extends Controller
{
    public function index()
    {
        // 获取包含域名的完整URL地址
        $this->assign('domain',$this->request->url(true));
        
        //继承Controller的话可以直接调用下面这个
        return $this->fetch('index');
    }
}    

下面是一个实际的例子截图,说明多级控制器下的输出模板及模板中调用的方法:
ThinkPHP5.1 多级控制器(分层控制器)的理解和使用_第1张图片
在模板中这样调用:
ThinkPHP5.1 多级控制器(分层控制器)的理解和使用_第2张图片

好啦,今天就这么多,每天进步一点点!

你可能感兴趣的:(ThinkPHP5.1,踩坑记)