成长脚印-专注于互联网发展
【解决】Thinkphp中if语句的嵌套用法
post by:天之骄子 2012-10-11 23:20
Thinkphp中if语句的嵌套用法】PS:纠结了很久,才发现if标签还可以这样写的。

问题是这样的:一条动态有多条回复,得控制有没有删除某条回复得权限
<if>
  显示回复<if>可以删除</if>
</if>

结果发现if标签不能这么嵌套,于是用eq代替内部的if(无奈之策)。虽然这个方法可行,但如果if中有多个条件AND或OR时,eq就没法替换if的这种功能了。


【如下方案经测试不可用(本来以为找到好方法了,失望之极呀,if1不会被解析的,而是原样输出)

------------------------------------------------------------------------------------------------

于是乎多方查找,终于发现了如下的解决方案。
<if  condition="$a eq 1">
    <if1 condition="$a eq 2">
       条件一
       <if2 condition="$a eq 3">
          条件二
       </if2>
    </if1>
</if>

目前标签是否可以嵌套是在标签库的定义文件里面定义的,默认支持的包括if iterate present

注意,只有if嵌套的时候if标签才用别名,如下情况第三个if就不需要别名了.
<if>
<if1>条件1</if1>
<if1>条件2</if1>
</if>

条件2的if就没必要用if2了。

-----------------------------------------------------------------------------


【实际上】Thinkphp是支持多标签嵌套的。如果嵌套太多无法解析,可以设置默认的嵌套层次。

默认的嵌套层次是3级,所以嵌套层次不能超过3层,如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数,

例如:

'TAG_NESTED_LEVEL' =>5

可以改变循环嵌套级别为5级。


】我碰到的实际问题其实并不是if嵌套问题

<if condition="$Think.session.UID eq $vo['user_id']">%2

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容