学习自:李炎恢
04. 控制器定义
还可以继承controller类的基类:
注意,首字母要大写!
如果有 大写的情况呢?
这样就好了
这方法以前是不支持的,但是修改配置之后就支持了,同时hello_world
依旧支持。
1. 修改根命名空间:
在本目录tp5.1下,建立一个文件夹.env
因为修改了跟命名空间,所以,这里namespace要修改,
2. 渲染输出
我们需要用json来输出。
这个,,,就是火狐浏览器,才是这样输出json格式的数据的,其实没什么,也是长知识了,见到这样,就知道是json格式的数据了。
1. 使用模板输出
输入看看,他强制我们下面这里建立一个模板
好!!!
默认是html格式输出
如果我们修改默认输出格式为json
。那么我们输出数组格式就不用json($data)。这样了,因为默认就是json格式了啊。
平时还是要修改回来的,这里只是演示一下而已。
2. 继承controller
我在index这个控制器中 重写了 initialize,我只要运行了这个类的任何一个方法,都会调用这个方法的。
但是,如果没有继承controller类的话,也就无从谈起初始化了。
这就是继承的好处。。
3. 设置debug模式(报错):
改为true
05 控制器操作:
1. 前置操作:
<?php
namespace app\controller;
use think\Controller;
class Before extends Controller
{
# 这个就是 预定义的那个,
protected $beforeActionList = [
'first'
];
# 这三个方法不是直接对外公开的。所以弄成 protected方法,并且就不用return,用echo了。
protected function first(){
echo 'first11111<br>';
}
protected function second(){
echo 'second';
}
protected function third(){
echo 'third';
}
public function index(){
return 'aaa';
}
public function one(){
return "one";
}
public function two(){
return "two";
}
}
我们上面绑定的是 first。然后我们访问不同的one,two,都会顺带先执行first方法的内容。
那怎么办么?。。我们用另外一种方法;
就验证的 second 不在 one 的时候使用。
我测试后发现: 不用非是protected方法,而且不用局限于first.second。那些 index, one two 都是可以这样前置方法的,只要讲return换成 echo。 return是不行的。
这就是 控制器的 前置操作。 比 初始化 更加灵活,可选择性大,
2. 跳转和重定向:
也是需要继承Controller这类。
一般就这两种方法:失败也会返回上次的目录,就是上次访问的,尽管我们没有写。都是上一层,这个有点迷,,,有可能会是死循环,这个自己在开发的时候要注意,多调试一下。
3. 空方法和空控制器:
也是需要继承 Controller类的
转载:https://blog.csdn.net/Zero_Adam/article/details/116353014