[英]Smarty TPL array inside variable?
我的問題,例如:
$a = array(); <- 1 mysql row
$id1 = 0; $id2 = 0;
$smarty->assign("a",$a);
$smarty->assign("id1",$id1);
$smarty->assign("id2",$id2);
PHP解決方案:
if($a['column_'.$id1.'_'.$id2]==0){echo"ok";}else{echo"no";}
聰明的TPL? 我試過了:
{if $a.column_'.$id1.'_'.$id2 == 0}{/if}
致命錯誤(:我找不到任何幫助,謝謝
為什么要在模板中編寫業務邏輯?
開發Smarty模板是為了使開發人員(業務邏輯)和設計師(演示)可以獨立工作。
從而使業務邏輯和表示邏輯彼此分開。
在PHP中評估所有表達式並將輸出傳遞到模板總是更好的選擇。
在那里可以打印變量。
您的第一個方法應該是嘗試重組數據-無論是在PHP中還是在Smarty中,使用復合鍵代表數據的多個維度,這樣往往會很快變得混亂。 PHP使處理多維數組變得異常簡單,因此不使用該功能實在可惜。
您可以遍歷您的數據並使用以下內容生成一個新結構:
$better_structured_array = [];
foreach ( $awkward_raw_array as $old_key => $item_value ) {
list($first_key, $second_key, $third_key) = explode('_', $old_key);
$better_structured_array[$first_key][$second_key][$third_key] = $item_value;
}
這樣,您的Smarty就很容易了:
{if $a.column[$id1][$id2] == 0}{/if}
如果由於某種原因您確實無法執行此操作,則訣竅是先將鍵構建到變量中,然后將其用作鍵訪問:
{assign name=ugly_array_key value='column_'|cat:$id1|cat:'_'|cat:$id2}
{if $a[$ugly_array_key] == 0}{/if}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.