您当前的位置: 首页 > 网站编程 > PHP教程 > 编写Smarty插件在模板中直接加载数据的详细介绍

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

作者:不详 来源:网络 发布时间: 2014-08-19 14:13 点击:
之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不好,只是数据多的时候php端的代码维护起来有点麻烦,特别是当存在很多模板块化得数据时。 所以写了个插件,结合之前的crud类实现在前

编写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}
分享到:
本文"编写Smarty插件在模板中直接加载数据的详细介绍"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4