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標籤將給我們帶來極大的方便。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章