2012-01-18 22 views
23

मुझे अपने फॉर्म में संग्रह प्रदर्शित करने में समस्या है। यह मेरा संग्रह में सभी सहेजे संस्थाओं के लिए क्यों Symfony2 सूचकांक प्रदर्शितSymfony2 फॉर्म संग्रह: वर्तमान ऑब्जेक्ट का सूचकांक दिखाया गया है

0 
Name: myInputName 
Address: myInputAddress 

1 
Name: myInputName 
Address: myInputAddress 

मेरा प्रश्न है ...

और:

जब मेरी इकाई संग्रह प्रदर्शित मैं कुछ इस तरह मिल गया है ...

यहाँ कोड मैं का उपयोग करें:

$builder    
     ->add('person', 'collection', array( 
      'label' => ' ',    
      'type' => new PersonType(), 
      'prototype' => true, 
      'allow_add' => true, 
      'allow_delete' => true, 
      'by_reference' => false, 
     )) 
    ; 

मेरी टहनी फ़ाइल में:

<div> 
    {{ form_widget(edit_form) }}  
</div> 

मदद कृपया

सैम

उत्तर

1

आप कस्टम अपने संग्रह के साथ सूचकांक प्रदर्शित नहीं करते के लिए का प्रतिपादन, उदाहरण के द्वारा कर सकते हैं:

{% block _FORMNAME_person_widget %} 
{% spaceless %} 
    {% for child in form %} 
     {{ form_widget(child.Name) }} 
     {{ form_widget(child.Address) }} 
    {% endfor %} 
{% endspaceless %} 
{% endblock %} 
+0

आपको बहुत बहुत धन्यवाद ... बेकार विधि विजेट के बिना लेबल को हटा देती है? – Sam

+0

"HTML टैग्स के बीच व्हाइटस्पेस हटाएं" (http://twig.sensiolabs.org/doc/tags/spaceless.html) इसका उपयोग \ vendor \ symfony \ src \ Symfony \ Bridge \ Twig \ Resources \ views \ फॉर्म \ form_div_layout.html.twig – webda2l

+4

यह वास्तव में समस्या का समाधान नहीं करता है। इसके बजाय, यह सिर्फ इंडेक्स को प्रदर्शित होने से छुपाता है। मुझे आश्चर्य है कि आप इंडेक्स को कहने के लिए कैसे बदलेंगे, इकाई का एक और मूल्य? –

75

संग्रह वस्तुओं के लिए अनुक्रमणिका (लेबल) को हटा रहा है:

$builder    
    ->add('person', 'collection', array(
     ... 
     'options' => array('label' => false) 
    )) 
; 

कस्टम लेबल प्रति पंक्ति आप फ़ॉर्म को स्वयं उत्पादन कर सकते हैं जोड़ना चाहते हैं:

{{ form_start(edit_form) }} 
    {% for person in form.persons %} 
     {{ form_row(person, {'label': 'custom label per item' }) }} 
    {% endfor %} 
{{ form_end(edit_form) }} 

नोट: Symfony 2,3 & 2,4

+0

मैं इसे निर्माता के भीतर करने की उम्मीद कर रहा था, लेकिन यह समाधान करेगा। धन्यवाद! –

+25

symfony3 के लिए ''विकल्प'' – sectus

1

मैं इस थोड़ी देर के लिए बंद कर दिया गया पता पर परीक्षण किया । और सुनिश्चित नहीं है कि यह कहीं और हल हो गया है। यह मुद्दा वास्तव में ठीक करने के लिए बहुत आसान है और मुझे आश्चर्य है कि इस बारे में कोई दस्तावेज नहीं है। पर्सन टाइप या संग्रह में उपयोग किए जाने वाले किसी भी प्रकार में बिल्ड व्यू में वर्र्स ['name'] को संशोधित करें, जिसे आप लेबल के रूप में प्रदर्शित करना चाहते हैं।

public function buildView(FormView $view, FormInterface $form, array $options) 
{ 
    // Adjust the view based on data passed 
    $this->vars['name'] = $form->getData(); 
    // Or... 
    $this->vars['name'] = 'Some random string'; 
} 

यदि आप इसे गतिशील चाहते हैं, तो आप ऑब्जेक्ट का उपयोग फॉर्म-> getData() द्वारा करेंगे। चूंकि, मेरी समस्या में, मैं एक फॉर्म थीम का उपयोग कर रहा हूं, टहलने को ओवरराइड करना वास्तव में मेरे लिए एक विकल्प नहीं है।

उम्मीद है कि यह किसी की मदद करेगा।

+0

के बजाय ''entry_options' का उपयोग करें, मुझे नहीं पता कि यह सिम्फनी 2.7 में बदल गया है, लेकिन ऐसा लगता है कि अब यह $ $-> vars ['name'] = 'foo bar बाज़ '; ' – StuBez

+1

सिम्फनी 3 में यह' $ व्यू-> वर्र्स [' name '] ' –

0

नीचे @ श्रीबैंडर्सनैच के समाधान का उपयोग करके, मुझे $this->vars['name'] (सिम्फनी 2.3) के बजाय $view->vars['name'] का उपयोग करना पड़ा।

(@ श्रीबैंडर्सनैच के उत्तर पर टिप्पणी के रूप में इसे जोड़ने के लिए क्षमा नहीं, मुझे अभी तक पर्याप्त प्रतिष्ठा नहीं मिली है)।

4

यह कुछ दिन पहले है, लेकिन क्योंकि मुझे सिम्फनी 3 के लिए एक ही प्रश्न का सामना करना पड़ रहा था, सेक्टस का जवाब सही है।

उपयोग अपने निर्माता के अंतर्गत

'entry_options' => ['label'=>false], 

विकल्प को छिपाने के लिए वह आइटम आपत्ति है।

सर्वश्रेष्ठ सादर

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