编写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!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...