手机
当前位置:查字典教程网 >编程开发 >php教程 >编写Smarty插件在模板中直接加载数据的详细介绍
编写Smarty插件在模板中直接加载数据的详细介绍
摘要:之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不...

之前使用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}

【编写Smarty插件在模板中直接加载数据的详细介绍】相关文章:

php将HTML表格每行每列转为数组实现采集表格数据的方法

php备份数据库类分享

php页面缓存ob系列函数介绍

无数据库的详细域名查询程序PHP版(5)

PHP SPL标准库之数据结构栈(SplStack)介绍

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能

PHP文件读取功能的应用实例

PHP中的命名空间详细介绍

php编写批量生成不重复的卡号密码代码

一个连接两个不同MYSQL数据库的PHP程序

精品推荐
分类导航