dede模板中如何使用if進行多分支判斷?
我們在用dede做模板的時候,經常會遇到需要根據某個條件判斷來分別顯示不同的內容的情況,也就是dede模板中的多分支判斷。比如典型的,我們需要根據風險管理數據庫表中的風險等級字段risklevel的取值的不同分別顯示不同的風險提示圖標。如圖1 所示。
紅色框中的投資項目名稱前面的圖標表示了不同的風險等級,一共有AA,D,E,HR 4個風險等級。在數據庫表中保存的分別是這4個等級取值中的一個,如圖2 所示。
我們的風險等級字段risklevel 是可以在列表模板中獲取到其取值的,因為我們在內容模型中已經設置了該字段允許被在列表模板中取值。
如圖 3 所示。
這樣,我們在列表模板中就很容易通過?
{dede:listpagesize='10'} ????[field:risklevel/] ?{/dede:list}
來得到風險等級的取值。??
但是我們不同風險等級對應的提示圖標卻位于圖片目錄下,而且這些提示圖片文件的名稱沒有任何規律,那么我們就需要通過if判斷來根據風險等級的不同取值來設置不同的提示圖片路徑。?
那么應該如何來判斷呢??
需要使用到[field:array]標簽,那么我們該如何來判斷呢?
我們首先要向大家介紹一個非常有用的dede標簽:[field:array] 標簽,該標簽是標簽 {dede:field name=’array’ /}的簡寫形式,該標簽用在列表標簽內部,例如:{dede:list}標簽, {dede: arclist}等標簽內部。?
我們知道,在列表標簽內部我們可以通過[field:字段名/]的形式得到某個數據庫表字段的取值,那么當我們想要進行分支判斷的時候,例如:根據風險等級取值的不同得到不同的圖標路徑,這個時候我們就必須借助[field:array] 標簽了,[field:array] 標簽標簽代表查詢得到的數據庫表中的一條記錄,具體的判斷代碼如下:
[field:array?runphp='yes']?????????? ????????????????????if(@me['risklevel']=="HR")@me="HR.png"; ????????????????????????else?if(@me['risklevel']=="D")@me="D.png"; ??????????????????????????????????else?if(@me['risklevel']=="AA")@me="AA.png"; ????????????????????[/field:array]?????????????? ????????????????????{/dede:list}
其意思就是說如果查詢得到的風險等級字段的取值是HR,那么將輸出HR.png, 如果查詢得到的風險等級字段的取值是D,那么將輸出D.png,如果查詢得到的風險等級字段的取值是AA,那么將輸出AA.png, 這里的HR.png,只是一個字符串,代表圖片文件所在的位置,你可以設置成任意的圖片路徑,上面的代碼是一種分支條件輸出語句,@me代表的就是輸出變量,剛進入標簽field:array時,@me代表數據庫的一條記錄,其數據類型是數組,我們根據其中risklevle的取值來判斷,從而將@me設置成不同的值,當退出標簽field:array時,@me的值就會被顯示在原位置。
這個標簽的功能非常強大,它適合于我們最常見的場景,當我們在模板頁面中需要根據特定的條件來進行if分支判斷來顯示不同的內容時,采用field:array標簽將給我們帶來極大的方便。