4
我想自動檢查HTML中的複選框。我已經成功地得到這個工作,但它是在模板有點凌亂:如何使用樹枝模板自動檢查複選框?
<ul>
{% for tag in tags %}
{% set selected = false %}
{% for article_tag in article.tags %}
{% if article_tag.id == tag.id %}
{% set selected = true %}
{% endif %}
{% endfor %}
<li><input type="checkbox" name="tags[]" value="{{ tag.id }}" {% if selected %}checked{% endif %}> {{ tag.name }}</li>
{% endfor %}
</ul>
所以我加載數據是這樣的(JSON格式):
[
'tags' => [
{'id'=> 1, 'name'=>'Travel'},
{'id'=> 2, 'name'=>'Cooking'},
],
'article' => {
'tags' => [
{'id'=> 1, 'name'=>'Travel'},
],
}
]
而且,我沒有使用Symfony(我正在使用Slim的Twig庫),所以不知道Symfony是否在它的框架中使用Twig做了一些東西。如果是這樣,它不會爲我工作:(
「文章」是一個數組,但是一個PHP關聯數組 - 在JSON中,我猜可能是一個對象。爲了清楚起見,我更新了我的問題並給出了PHP關聯數組的JSON格式的數據示例。問題不是它沒有工作,而是工作。但似乎我必須在我的視圖中嵌套循環,這看起來像模板中的很多邏輯 - 我希望Twig有一些構建機制來處理這個問題,因爲在輸出複選框時這是相當普遍的事情。除非這是實現這一目標的唯一手段,否則我會堅持下去。謝謝 – Martyn
Hi @Martyn現在我明白你的問題了,在symfony中,有一個表單組件可以爲你管理這種行爲(我不知道如何管理一個窗體......)。爲了獲得更多的清理代碼,你可以在宏或者小枝函數中封裝它。希望得到這個幫助 – Matteo
感謝您的迴應。葉在網上搜索我可以看到Symfony具有該框架似乎包含的其他功能。我不認爲Slim提供很多。我會考慮一下宏,看看它是否會運行良好,或許有助於保持整潔。 – Martyn