编写Smarty插件在模板中直接加载数据的详细介绍
2015-01-24信息快讯网
本篇文章是对编写Smarty插件在模板中直接加载数据进行了详细的分析介绍,需要的朋友参考下
之前使用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}
PHP empty函数报错解决办法
PHP 函数call_user_func和call_user_func_array用法详解
PHPMailer的主要功能特点和简单使用说明
smarty获得当前url的方法分享
smarty模板中拼接字符串的方法
php根据isbn书号查询amazon网站上的图书信息的示例
preg_match_all使用心得分享
分享下页面关键字抓取components.arrow.com站点代码
php缓冲 output_buffering和ob_start使用介绍
sae使用smarty模板的方法
Smarty foreach控制循环次数的实现详解
如何在smarty中增加类似foreach的功能自动加载数据
比较strtr, str_replace和preg_replace三个函数的效率
使用HMAC-SHA1签名方法详解
探讨:array2xml和xml2array以及xml与array的互相转化
解析argc argv在php中的应用
解析func_num_args与func_get_args函数的使用
解析php常用image图像函数集
基于PHP magic_quotes_gpc的使用方法详解
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
解析yahoo邮件用phpmailer发送的实例
深入php中var_dump方法的使用详解
解析PHP中ob_start()函数的用法
关于PHP模板Smarty的初级使用方法以及心得分享
解析smarty 截取字符串函数 truncate的用法介绍
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
php中0,null,empty,空,false,字符串关系的详细介绍
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
解析smarty模板中类似for的功能实现