1. 程式人生 > >Thinkphp框架中IF標籤的易犯錯誤彙總

Thinkphp框架中IF標籤的易犯錯誤彙總

今天用到了Thinkphp框架中IF標籤,一直報錯,在排錯過程中很是糾結,特此總結一下。

官方文件:模板->內建標籤->IF標籤舉例如下:

用法示例:

  1. <ifcondition="($name eq 1) OR ($name gt 100) "> value1
  2. <elseifcondition="$name eq 2"/>value2
  3. <else/> value3
  4. </if>
同時需要注意:

在condition屬性中可以支援eq等判斷表示式,同上面的比較標籤,但是不支援帶有”>”、”<”等符號的用法,因為會混淆模板解析,所以下面的用法是錯誤的:

  1. <if condition="$id < 5 ">value1
  2. <else/> value2
  3. </if>

必須改成:

  1. <ifcondition="$id lt 5 ">value1
  2. <else/> value2
  3. </if>

除此之外,我們可以在condition屬性裡面使用php程式碼,例如:

  1. <ifcondition="strtoupper($user['name']) neq 'THINKPHP'">ThinkPHP
  2. <else/> other Framework
  3. </if>

condition屬性可以支援點語法和物件語法,例如:自動判斷user變數是陣列還是物件

  1. <ifcondition="$user.name neq 'ThinkPHP'">ThinkPHP
  2. <else/> other Framework
  3. </if>

或者知道user變數是物件

  1. <ifcondition="$user:name neq 'ThinkPHP'">ThinkPHP
  2. <else/> other Framework
  3. </if>
個人總結及注意事項:

1、使用IF標籤時必須注意變數的寫法,此處變數一定不能用{}括起來,千萬不要受官方文件前面的變數引用部分誤導,否則結果就是報錯報錯。

2、使用時注意<else/>必須自己閉合。

3、符號的應用,什麼可用什麼不可用,==號和eq都是可以用的。

4、condition=後面必須用“”把條件包含其中,但是()不是必須的。

犯錯及糾錯例項待補充。