第十四章:第7节thinkPHP框架——变量输出

更新于:2018-01-04 20:59:44

通过上节内容,使用fetch方法把控制器方法与视图文件“串联”到一块。控制器方法写业务逻辑,视图文件做数据展示。


视图文件做数据展示,它展示的肯定不是HTML静态的数据,而是从控制器方法逻辑运算最后获得的动态数据。那控制器方法怎么把数据传给视图文件呢?这里需要用到“Controller类”的assign方法。


assign方法:


1.png


assign有两种使用方式:


1)给视图文件一个变量赋值,可这样:$this->assign('变量名1',变量值1);


2)给视图文件多个变量赋值,可这样 $this->assign(['变量名2'=>变量值2,'变量名2'=>变量值2]);


1.png


这样视图文件中就可以使用这些变量了。那怎么使用呢?


一种方式,直接以PHP代码的形式使用


1.png

1.png


另一种方式,使用TP框架的模板变量输出


1.png


用{}包裹变量,也可以输出变量


1.png

视图文件编译后的结果就是PHP代码:<?php echo $变量;?>


注意标签的{$之间不能有任何的空格,否则标签无效。


视图文件运行的原理:


很多人可能以为控制器方法是用“require_once”等流程控制结构加载的视图文件,其实不是的。


因为视图文件中可以写TP框架自己的模板标签,PHP解释器无法解读这些模板标签,TP框架必然要把视图文件中的模板标签转成PHP代码,所以在“require_once”之前,先要做一次转换。


1.png

还记得“runtime”目录吧,转换后的PHP文件就存在这。


1.png


注:


这个PHP文件其实是模板缓存。视图文件(模板文件)在没有做修改的情况下,模板缓存没有被删除的情况下,TP框架没有必要再次生成模板缓存。


不过有的时候我们修改了视图文件,发现网页内容并没有改变,原因就在这,模板缓存没有重新生成,解决办法手动删除下即可。


再回到开头的问题上,控制器方法怎么把数据传给视图文件?视图文件是否可以直接获取到控制器方法的变量?


1.png

1.png

1.png


出错了,看来是不可以!


本节学习代码》》》