【解决】Thinkphp中if语句的嵌套用法
【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
阅读本文后,您的心情是:
恶心
愤怒
强赞
感动
路过
无聊
雷囧
关注