2011-11-29 15 views
5

मैं syigfony2 में 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 %} 

हालांकि इस प्रकार एक रेडियो इनपुट कि कुछ इस तरह दिखता ...

<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> 

मैं अपने कस्टम प्रपत्र विषय में radio_widget ब्लॉक अधिरोहित है रेंडर करने के लिए लक्ष्य कर रहा हूँ, यह निम्न मार्कअप renders :

<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> 

मूल रूप से, प्रत्येक रेडियो इनपुट तत्व के लिए अपने लेबल बनाना पहचान करने के लिए है कि क्या यह के लिए मूल्य हाँ है या नहीं, मैं एक पूर्व मौजूदा घ के साथ काम कर रहा हूँ इशारा करें ताकि मैं आसानी से एचटीएमएल मार्कअप tweak नहीं कर सकता।

मैं रेडियो ग्रंथों को चयन ग्रंथों को लेबल के रूप में उत्पन्न करने से कैसे रोक सकता हूं? मुझे पता है कि यह आंतरिक रूप से field_label ब्लॉक को कॉल करता है, लेकिन जैसा कि आप देख सकते हैं कि मेरा radio_widget इसका संदर्भ नहीं देता है, इसलिए मैं इस व्यवहार को रोकने के तरीके के बारे में थोड़ा खो गया हूं।

संपादित करें:

स्पष्ट है कि, मैं अपनी पहली उदाहरण के रूप में संरचना के एक ही तरह चाहते हैं ... मैं नाम को छोड़ दिया है और मूल्य का श्रेय आदि, लेकिन स्पष्ट रूप से इसकी सिर्फ प्रदर्शन के उद्देश्य से।

उत्तर

10

क्या आप ओवरराइड करने के लिए की जरूरत है radio_widget ब्लॉक नहीं है, लेकिन choice_widget एक:

{% 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' ने किया। –

संबंधित मुद्दे