2012-03-16 9 views
2

ManyToMany関係のエンティティ選択フィールドを持つDoctrineエンティティ用のSymfony 2フォームがあります。選択フィールドには選択肢がない可能性があります - これをTwigでどのようにテストできますか?Twigテンプレートのエンティティフィールドから選択肢の数を取得

例:フォームは、「取引」エンティティ用で、オプションで「ロケーション」エンティティに割り当てることができます。

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

このフィールドは、チェックボックスでレンダリングするように設定されています。ただし、「場所」レコードは存在しない可能性があります。このシナリオでは、ユーザーにはラベル "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%} ' –

+0

最新バージョンでは次を使用してください: http://stackoverflow.com/questions/18115245/symfony2-deprecated -get-in-formview-replacement 新しいバージョンでは、このコードが壊れてしまい、Symfony 2.4でテストされた – LPodolski

答えて

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 %} 
関連する問題