簡體   English   中英

Smarty TPL數組內部變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM