编写Smarty插件在模板中直接加载数据的详细介绍

  次阅读 来源:互联网(转载协议) 2016-03-02 15:31 我要评论(0)

之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不好,只是数据多的时候php端的代码维护起来有点麻烦,特别是当存在很多模板块化得数据时。

所以写了个插件,结合之前的crud类实现在前端模板可以加载一些模块化得数据。

复制代码 代码如下:

<?php

/**

* Smarty plugin

* @package Smarty

* @subpackage plugins

*/

/**

* Smarty {load_data} function plugin

*

* Type:function<br>

* Name:eval<br>

* Purpose:evaluate a template variable as a template<br>

* @link http://smarty.php.net/manual/en/language.function.eval.php {eval}

* @param array

* @param Smarty

*/

function smarty_function_load_data($params, &$smarty)

{

$class = (!isset($params['class']) || empty($params['class'])) ? 'cls_crud' : trim($params['class']);

(!isset($params['table']) || empty($params['table'])) && exit('`table` is empty!');

$db = $class::factory(array('table' => $params['table']));

//var_dump($params);

if (!empty($params['assign'])) {

//把数据赋值给变量$params['assign'],这样前端就可以使用这个变量了(例如可以结合foreach输出一个列表等)

$smarty->assign($params['assign'], $db->get_block_list(array($params['where']), $params['limit']));

}

}

?>

写成插件除了可以减少很多维护之后,还有一个显著的好处就是可以在这个插件中对查询数据库的操作进行统一的格式化和过滤操作。这样在前端就可以这样加载数据了:

复制代码 代码如下:

{load_data assign="list" table="test" where="`id`<100" limit=10}

{foreach from=$list item=rec}

...

{/foreach}

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 汤晓鸥:人工智能的中国式文艺复兴

    汤晓鸥:人工智能的中国式文艺复兴

  • 全球陷入"区块链狂热"潮,大规模应用还需等待

    全球陷入"区块链狂热"潮,大规模应用还需等待

  • 马云的新零售?张近东的智慧零售?抑或是刘强东的第四次零售革命?

    马云的新零售?张近东的智慧零售?抑或是刘强东的第四次零售革命?

  • 区块链最近太火,但A股多家公司明确表态不考虑涉足

    区块链最近太火,但A股多家公司明确表态不考虑涉足

网友点评网友点评
阅读推荐阅读推荐

算法 任何一个入门的软件开发人员都会听到这句话:算法是软件的灵魂!近年来大火的机器学习即是在算法在人工智能上的集中体现。今日头条通...

据《日本经济新闻》报道,日本东京大学教授稻叶雅幸等人开发出再现日本人骨骼肌肉构造的机器人。机器人各部位的肌肉和骨骼长度与日本人的平...

以奥黛丽-赫本为原型打造的人形机器人索菲娅首次拜访了印度。索菲娅是世界上首位获得公民身份的机器人,她在12月30日出现在了印度理工学院...

在查获现场,代售点电脑旁的一台机器人通过敲击电脑键盘抢票。 广州日报惠州讯 (全媒体记者秦仲阳 通讯员张中铃摄影报道)2018年春运售票已...