之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不好,只是数据多的时候php端的代码维护起来有点麻烦,特别是当存在很多模板块化得数据时。
所以写了个插件,结合之前的crud类实现在前端模板可以加载一些模块化得数据。
复制代码 代码如下:
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty {load_data} function plugin
*
* Type: function
* Name: eval
* Purpose: evaluate a template variable as a template
* @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`{foreach from=$list item=rec}
...
{/foreach}
0
0
相关文章
Moodle课程摘要中的图片无法显示的解决方案
php实现班级通信录怎么导入压缩包_php解压后导入文件【步骤】
kali怎么挖php漏洞_用wpscan查php站插件漏洞【步骤】
php数据库怎么进报错accessdenied_php解决连库拒绝法【步骤】
kali怎么挖php漏洞_用nikto检测php站点常见漏洞【方法】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
共46课时 | 3.2万人学习
Webpack4.x---十天技能课堂
共20课时 | 1.5万人学习
PHP入门到实战消息队列RabbitMQ
共22课时 | 1.3万人学习
最新文章









