一、控制器知识点
1.默认控制器标识为:Controller
2.默认控制器:Index
3.控制器默认方法:Index
默认配置一般不改,如果需要修改,可以在config/route.php文件中修改。
二、控制器渲染输出
控制器渲染输出都是以return返回的,常见输出有直接输出、json输出、模板输出。如下:
<?php namespace app\index\controller; class Index { public function hello() { // 输出hello,world! return 'hello,world!'; } public function json() { // 输出JSON return json($data); } public function read() { // 渲染默认模板输出 return view(); } }
三、多级控制器
控制器Controller下可以任意新建层级,比如在Controller下新建Admin文件夹,然后新建Login.php控制器:
命名空间:namespace app/controller/admin
访问地址:http://localhost/index.php/admin.login/index
路由配置:Route::get('admin/login','admin.login/index')
四、基础控制器
我还不知道有什么用,只知道说可以获取当前控制器名称和方法、路径等而已
<?php declare (strict_types = 1); namespace app\admin\controller; use app\BaseController;//引入基础控制器 class Index Extends BaseController//继承基础控制器 { public function index() { return '当前方法名:'.$this->request->action().',实际路径为:'.$this->app->getBasePath(); } public function hello(){ return "hello,管理员!"; } }
五、空控制器
也不知道有什么用,感觉就是拿报错的,也就是当访问不到控制器或方法时返回一个错误提示,而不是系统默认的调试报错。当定义空控制器时优先级在于.env和config/app.php里面的调试。
六、资源控制器
php think make:controller admin@Admin //或使用完整路径 php think make:controller app\index\controller\Admin
生成资源控制器后自动生成增、删、改、查等操作方法,然后会自动生成路由规则,只需要配置以下路由规则即可调用各种方法:
Route::resource('admin', 'Admin');
然后路由规则如下:
也就是说通过不用再配置其他路由就可以访问到资源控制器里面的方法,如:
//第一种: http://localhost/admin/admin //在Get请求类型下访问的是资源控制器中的index()方法 //在POST请求类型下访问就是资源控制器中的save()方法 //第二种: http://localhost/admin/admin/1 //在Get请求类型下访问的是资源控制器中的read()方法 //在PUT请求类型下访问就是资源控制器中的update()方法 //在delete请求类型下访问就是资源控制器中的delete()方法
但是在资源控制器中,自定义方法是不能操作模型的,自定义方法在调用时都会跳转到read()方法,如果read()方法存在,方法名会被认成是read($id)的id参数,如删除read()方法就直接报错:
#0 [0]HttpException in Controller.php line 107 方法不存在:app\admin\controller\Admin->read()
七、控制器中间件
还不懂什么意思