2012-03-16 73 views
2

我有一個具有ManyToMany關係的實體選擇字段的Doctrine實體的Symfony 2形式。選擇字段可能沒有任何選擇 - 我如何在Twig中測試此選項?從小枝模板中的實體字段獲取選擇的數量

示例:表單適用於「交易」實體,可以選擇將其分配給「地點」實體。我呈現如下所示的「位置」實體字段:

{{ form_label(edit_form.locations) }} 
{{ form_errors(edit_form.locations) }} 
{{ form_widget(edit_form.locations) }} 

該字段設置爲帶複選框的呈現。但是,可能不存在「位置」記錄。在這種情況下,用戶將看到標籤「位置:」但沒有複選框。我想有一個顯示一條消息,沿此線的東西條件語句:

{{ form_label(edit_form.locations) }} 
{{ form_errors(edit_form.locations) }} 
{{ form_widget(edit_form.locations) }} 
{% if edit_form.locations.choices|length == 0 %} 
    You haven't created any Locations yet! 
{% endif %} 

任何人都知道的一種方式來實現這一目標?

+0

找到自己的答案,沒有足夠高的聲譽來回答我的自己的問題很快:'{%if edit_form.locations.get('choices')| length == 0%}' – 2012-03-16 18:08:34

+0

最新版本應該使用: http://stackoverflow.com/questions/18115245/symfony2-deprecated -get-in-formview-replacement 因爲在新版本中這個代碼會破壞,在Symfony 2.4上測試 – LPodolski 2014-02-19 21:13:50

回答

3

只是爲了幫助別人......
在新版本中,它應該是:

{% if edit_form.locations.vars.choices|length == 0%} 

我實際上要做到這一點,所以我將分享:
如果你有一個嵌入式表單,並且想要執行相同類型的檢查,除了從原型中抽取數據(如果表單不是用任何子表單生成的)

{% if form.childForms.vars.prototype.field.vars.choices|length == 0 %} 

「childForms」是嵌入表單類型和「場」被選擇欄你想選擇出去的......

0

發現:

{% if edit_form.locations.get('choices')|length == 0 %} 
相關問題