小言_互联网的博客

ThinkPHP学习 --- 04控制器定义 --------------05控制器操作 -----------------学习

238人阅读  评论(0)

学习自:李炎恢

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场