2011-11-29 9 views
5

symfony2でTwigを使用してフォームレイアウトをカスタマイズしようとしています。私はしかし、これは次のマークアップをレンダリングsymfony2:ラジオウィジェットがラベルを表示しないようにする

{% block radio_widget %} 
{% spaceless %} 
    <span class='form-radio'> 
     <input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} /> 
    </span> 
{% endspaceless %} 
{% endblock radio_widget %} 

を次のように私は私のカスタムフォームのテーマでradio_widgetブロックを上書きしている...このようになりますラジオ入力をレンダリングするために

<label class=" required">Label name</label> 
<span class="form-radio"> 
    <input type="radio" name="album_has_subalbums_1" /> Yes 
</span> 
<span class="form-radio"> 
    <input type="radio" name="album_has_subalbums_0" /> No 
</span> 

を目指しています各無線入力要素のそれの値が私は既存のDで働いているYesまたはNoであるか否かを識別するためのラベルを作成するための基本的

<label class=" required">Label name</label> 

<span class="form-radio"> 
    <input type="radio" id="album_has_subalbums_1" name="album[has_subalbums]" required="required" value="1"> 
</span> 
<label for="album_has_subalbums_1" class=" required">Yes</label> 

<span class="form-radio"> 
    <input type="radio" id="album_has_subalbums_0" name="album[has_subalbums]" required="required" value="0"> 
</span> 
<label for="album_has_subalbums_0" class=" required">No</label> 

、私は簡単にhtmlのマークアップを微調整することはできません。

ラジオ入力によって選択テキストがラベルとして生成されないようにするにはどうすればよいですか? field_labelというブロックが内部で呼び出されていますが、わかりましたが、私のradio_widgetはその参照をしていないので、この動作を防ぐ方法は少し分かりません。

EDIT:

明確にするために、私は私の最初の例として、構造体の同じ種類をしたい...私は名前と値の属性などを残したが、明らかにそのちょうどデモの目的のためにしています。あなたがオーバーライドする必要がどのような

答えて

10

radio_widgetブロックではなく、choice_widget 1:

{% block choice_widget %} 
{% spaceless %} 
    {% if expanded %} 
     <div {{ block('widget_container_attributes') }}> 
     {% for child in form %} 
      {{ form_widget(child) }} 
      {{ child.get('label') | trans }} {# <- this is what you need #} 
    {# leave the rest untouched #} 

そして、この変更を反映させるためにキャッシュをクリアすることを忘れないでください。

+0

+1私はこれを明日行っておきます – JamesHalsall

+0

'child.get( 'label')'は私のためには機能しませんでしたが、 'child.vars.label'は私のために機能しませんでした。 –

関連する問題