我想將{unset($array['index'])}
變成Smarty 3模板。Smarty:取消模板中的數組索引
支持這樣的語法(或類似)嗎?谷歌搜索和文檔閱讀後,我找不到滿意的東西。
也許我應該向Smarty開發團隊請求功能請求? :)
無論如何,你會如何做到這一點目前可用的模板功能?
我想將{unset($array['index'])}
變成Smarty 3模板。Smarty:取消模板中的數組索引
支持這樣的語法(或類似)嗎?谷歌搜索和文檔閱讀後,我找不到滿意的東西。
也許我應該向Smarty開發團隊請求功能請求? :)
無論如何,你會如何做到這一點目前可用的模板功能?
我不認爲在smarty中有直接的支持。你總是可以用smarty的{php}
標籤來做到這一點,但我強烈建議你不要這樣做。邏輯不屬於演示級模板。
+1:絕對正確。 –
如果「邏輯不屬於演示文稿」,你不需要Smarty,只需要'strtr()':-P然而,爲了使這個評論有用,你認爲你可能不需要做你的建議因爲你可以循環使用一個'{if}'和'{continue}'來跳過你不需要的密鑰?正如[例7.42](http://www.smarty.net/docs/en/language.function.foreach.tpl) – artfulrobot
@artfulrobot使用'{if}'和'{continue}'是根本不同的,因爲他們不修改數據。數據修改不屬於表示層。 –
我認爲,你不應該這樣做,因爲所有的邏輯必須在代碼中不在模板中。
但是你可以編寫自己的修飾符http://www.smarty.net/docs/en/plugins.modifiers.tpl
模板引擎背後的主要思想是,你可以做所有的負載,邏輯,解封等你解析視圖前。有人說,你不應該在你的模板中取消設置數據,我很確定他們不會實現該功能請求。
我也不明白爲什麼你想要取消一個聰明的變量:只是不使用它,它不會顯示。
你不覆蓋的價值?
{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}
這智者< 3爲我工作的,不知道是否仍然有效,因爲他們真的搞砸了智者。
試試這個
{$array.index = null}
感謝這個想法,但不幸的是,它並沒有按照我想要的那樣完成:從'Array([a] => 1 [b] => 2)''開始,'{array.a = null}' ,我得到'Array([a] => [b] => 2)'而不是'Array([b] => 2)' –
嘗試
{VAR分配= $ array.index值= NULL)}
有雖然:-)
方式{$array=$array|array_diff_key:(['index']|array_flip)}
即使這不是一個好主意在模板中執行,有時可以節省您的時間。
謝謝大家的回答。似乎問題確實在控制器/視圖分離。但事情在原始代碼中完成的方式導致我「想要在模板中取消設置數組索引」... –