Smarty内建函数

来源:互联网 发布:21端口入侵 编辑:程序博客网 时间:2024/05/16 16:15

暂时只记录个别,不全部记录

 

{nsert} 函数

 

缓存开启后 如果不想缓存模板中某一个部分的信息可以使用此函数

 

实例代码:

{insert nme="getMssage" lid=1 , sid=2}


此时smarty会调用函数名为 insert_getMessae()的函数 而该函数通常是我们自定义的,函数大概的代码 (为了说明 简单写)

<?phpfunction insert_getMessage($ars) {    /*      通过上面的insert调用此函数时    参数$ars 的值为          $ars = array('lid' => 1 ,'sid' => 2);      也就是说你可以传递任意个参数     属性名会成为 $ars 的键属性的值就是对应的值    */   // 一些数据库操作 获取数据      return $resut;   }?>


这里 假设 $resul 是一个数组,一旦 smarty 调用 getMessage 函数得到结果之后会立刻输出,所以 目前我们只能看到 Array 被输出在页面中。

 

解决方法是

1:直接在函数体内便利结果数组,直接把 html 返回。

2:先把结果数组用 assign 保存下来 例如

{insert name="getMessage" lid= 1 , sid=2 assign="testMessage"}


 

如果 insert 有 assign 那么 smarty 不会吧 结果直接输出,而是把 结果赋值到 testMessage 变量中。

我们可以通过 section 或 foreach 来便利结果。

 

问题是我测试后发现 如此的操作 得到的 testMessage 用 循环语句 便利 是看不到效果,当我把 $tpl -> caching = false 之后才能看到。

但这样做的话 已经关闭了缓存 何必还使用 insert 呢 ?

 

其他的 解决方法还没找到,刚碰smarty 后期 找到其他的 解决方法之后在补。