服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - 编写Smarty插件在模板中直接加载数据的详细介绍

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

2020-04-30 10:24PHP教程网 PHP教程

本篇文章是对编写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教程PHP PDOStatement::rowCount讲解

    PHP PDOStatement::rowCount讲解

    今天小编就为大家分享一篇关于PHP PDOStatement::rowCount讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看...

    php参考手册1922019-06-23
  • PHP教程PHP getName()函数讲解

    PHP getName()函数讲解

    今天小编就为大家分享一篇关于PHP getName()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册3422019-06-22
  • PHP教程PHP 数字左侧自动补0

    PHP 数字左侧自动补0

    举例来说:员工的工号 X001 虽然 MySQL 本身的字段设定成 zerofill 的属性时,会将不足位数的部份补上0,但是这个功能只能用在数字的字段上面。 所以必要的...

    php技术网2082019-10-27
  • PHP教程php中http_build_query 的一个问题

    php中http_build_query 的一个问题

    http_build_query 远程攻击者可以利用漏洞获得敏感内存信息。请大家谨慎使用 ...

    PHP教程网2222019-12-28
  • PHP教程PHP开发负载均衡指南

    PHP开发负载均衡指南

    过去当运行一个大的web应用时候意味着运行一个大型的web服务器。因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器。...

    php教程网3212019-11-04
  • PHP教程PHP备份数据库生成SQL文件并下载的函数代码

    PHP备份数据库生成SQL文件并下载的函数代码

    这是一个将指定数据库里的所有表备份为一个SQL文件,可下载。这个源码来自dedecms程序,功能挺多,也很实用,但是代码的质量还有待提高 ...

    PHP教程网2222019-12-25
  • PHP教程php自动加载的两种实现方法

    php自动加载的两种实现方法

    php自动加载的两种实现方法,需要的朋友可以参考下。 ...

    php教程网1912019-11-01
  • PHP教程用Json实现PHP与JavaScript间数据交换的方法详解

    用Json实现PHP与JavaScript间数据交换的方法详解

    本篇文章是对用Json实现PHP与JavaScript间数据交换的方法进行了详细的分析介绍,需要的朋友参考下 ...

    PHP教程网1132020-04-21