暂时只记录个别,不全部记录
{nsert} 函数
缓存开启后 如果不想缓存模板中某一个部分的信息可以使用此函数
实例代码:
{insert nme="getMssage" lid=1 , sid=2}
此时smarty会调用函数名为 insert_getMessae()的函数 而该函数通常是我们自定义的,函数大概的代码 (为了说明 简单写)
<?php
function 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 后期 找到其他的 解决方法之后在补。