最近使用ThinkPHP5.1在开发一套程序,之前的项目中大多数是后台管理程序,不需要在控制器里进行大量的数据库查询和调用。而这次因为这个程序是一个监控显示程序,需要在前台调取10+栏目的数据并且分别展示出来。
那么按照正常的思路就是在控制器的方法中写大量的查询语句并用assign函数绑定到模板变量中,然后再模板变量中用volist输出。
这样子操作太麻烦,因为要给这10+栏目的数据设置10个变量名(数组),而且模板中需要进行大量的修改。这样很不程序化……
怎么办呢?打开官方手册地址:https://www.kancloud.cn/manual/thinkphp5_1/354084
手册中给出了一个解决方法:直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量。
那么怎么实现呢?
首先打开\application\common.php文件,写一个公用的调用函数,如下:
function G_data($type){
$list = Db::table('c')->where('type',$type)->where('status',1)->select();
return $list;
}
这个函数的意思是查询数据库中c表里符合status=1且type=传参的数据。
那么模板中怎么写?
{volist name=":G_data(0)" id="data"}
<p><a href="{$data.link}" target="_blank">{$data.name}</A></p>
{/volist}
这段代码的意思是查询type=0的数据并显示出它的链接link和内容name。