2007年12月29日星期六

Smarty初学者的模糊问题

Smarty初学者的模糊问题
呵呵,自己的经历, 拿出来献丑了。
1. smarty里面的数组是可以计算数组大小的。
比如php: $smarty->assign("array", $array);
在模版中中可以这样显示数组大小:
{$array|count}
当时傻冒,没有好好看手册, 把数组大小放在单独的smarty变量里,再在模版中输出, 给自己带来了不少的麻烦。
2. 模版中如何判断结果集是否为空?
一种办法是用上面的count.
再就是,使用section后, 判断 section的index的大小:
比如:
{section name=hello loop=$data}
{$data[hello].title}
{/section}
{if $smarty.section.hello.index <>
show something here!!
{/if}
3. 分隔符问题
初学时,感觉默认的delimitor ?? delimiter 是 { }, 生怕模版中的静态东西也有这两个字符,就把分隔符设为{{ }}, 其实smarty里有{literal} {/literal}表达式,在这里面的东西都被当作静态的内容输出, smarty不会对其进行转义处理。
使用它,也不必担心js中也需要使用 {}了。
4.数组问题。
写惯了其他程序,总是用数字下标来使用变量。
这样,在数据库提取数据的时候,需要把 每个表字段对应的数组下表记下来, 再在 html中挨个对应检查输出, 特别麻烦。
其实在php中可以使用hash数组,就是用字符串做数组下标。
例如:
PHP:
while($row = $result->fetch_assoc()){
$data[] = $row;
}
$smarty->assign("data",$data);
TPL:
{secton name=output loop=$data}
{$data[output].数据库字段名称}
{/section}
这样只要记住数据库字段名就可以了, 不用挨个找对应关系,修改也很方便。
缺点是: 容易暴露数据库结构, 有利有弊吧。

没有评论: