之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不好,只是数据多的时候php端的代码维护起来有点麻烦,特别是当存在很多模板块化得数据时。所以写了个插件,结合之前的crud类实现在前端模板可以加载一些模块化得数据。 <div class="codetitle"><a style="CURSOR: pointer" data="15693" class="copybut" id="copybut15693" onclick="doCopy('code15693')"> 代码如下:<div class="codebody" id="code15693"> <?php / 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'])); } } ?>
写成插件除了可以减少很多维护之后,还有一个显著的好处就是可以在这个插件中对查询数据库的操作进行统一的格式化和过滤操作。
<FONT style="COLOR: #ff0000">这样在前端就可以这样加载数据了:
<div class="codetitle"><a style="CURSOR: pointer" data="7407" class="copybut" id="copybut7407" onclick="doCopy('code7407')"> 代码如下:<div class="codebody" id="code7407"> {load_data assign="list" table="test" where="id <100" limit=10} {foreach from=$list item=rec} ... {/foreach}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|