• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-26) 14次浏览 已收录 0个评论

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

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

<?php<BR>/**<BR> * Smarty plugin<BR> * @package Smarty<BR> * @subpackage plugins<BR> */<BR>/**<BR> * Smarty {load_data} function plugin<BR> *<BR> * Type:     function<br><BR> * Name:     eval<br><BR> * Purpose:  evaluate a template variable as a template<br><BR> * @link http://sm<mark style="color:transparent">本%文来源gaodaimacom搞#^代%!码网@</mark>搞代gaodaima码arty.php.net/manual/en/language.function.eval.php {eval}<BR> * @param array<BR> * @param Smarty<BR> */<BR>function smarty_function_load_data($params, &$smarty)<BR>{<BR>    $class = (!isset($params['class']) || empty($params['class'])) ? 'cls_crud' : trim($params['class']);<BR>    (!isset($params['table']) || empty($params['table'])) && exit('`table` is empty!');<BR>    $db = $class::factory(array('table' => $params['table']));<BR>    //var_dump($params);<BR>    if (!empty($params['assign'])) {<BR>        //把数据赋值给变量$params['assign'],这样前端就可以使用这个变量了(例如可以结合foreach输出一个列表等)<BR>        $smarty->assign($params['assign'], $db->get_block_list(array($params['where']), $params['limit']));<BR>    }<BR>}<BR>?><BR>


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

{load_data assign="list" table="test" where="`id`<100" limit=10}<BR>{foreach from=$list item=rec}<BR>   ...<BR>{/foreach}<BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:编写Smarty插件在模板中直接加载数据的详细介绍_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址