2012-11-06 15 views
6

के साथ सरणी इनपुट फ़ील्ड बनाएं मुझे सिम्फनी 2 में फॉर्म बिल्डर का उपयोग करने में कोई समस्या है। सटीक होने के लिए, मुझे इनपुट फ़ील्ड की आवश्यकता है जो HTML सरणी है, लेकिन मैं इसे CreateFormBuilder-> जोड़ें के साथ नहीं बना सकता। यहाँ है कि मैं क्या करने की कोशिश की:फॉर्म बिल्डर symfony2

$attributesForm = $this->createFormBuilder() 
     ->add('attribute[0]', 'text') ... 

और इसी तरह, लेकिन मैं निम्नलिखित अपवाद:

नाम "विशेषता [0]" अवैध वर्ण हैं। नामों को एक अक्षर,> अंक या अंडरस्कोर से शुरू होना चाहिए और केवल अक्षरों, अंक, संख्याएं, अंडरस्कोर ("_"), हाइफ़न> ("-") और कोलन (":") शामिल होना चाहिए।

क्या कोई अच्छा समाधान है या मुझे मैन्युअल रूप से फ़ील्ड बनाना है?

अग्रिम धन्यवाद!

संपादित करें: इस आगे स्पष्ट करने के लिए ... मैं कुछ इस तरह उत्पन्न किया जा करना चाहते हैं:

<div id="msoft_adminbundle_offertype"> 
<div>Name <input type="text" name="name"></div> 
<div>...</div> 
<div>Attribute 0 <input type="text" name="attribute[0]"></div> 
<div>Attribute 1 <input type="text" name="attribute[1]"></div> 
<div>Attribute 3 <input type="text" name="attribute[3]"></div> 
<ul> 
    </ul> 
<p> 
    <button type="submit">Edit</button> 
</p> 

मदद?

उत्तर

4

आप 'संग्रह'-फ़ील्ड प्रकार का उपयोग कर इनपुट फ़ील्ड की एक सरणी बना सकते हैं।

इसे उपयोग करने के बारे में प्रलेखन यहां पाया जा सकता:

Collection documentation

अगर वह पर्याप्त स्पष्ट नहीं है या आप अभी भी प्रश्न मैं खुशी उन लोगों के साथ तुम्हारी मदद करेगा है।

+0

बहुत बहुत धन्यवाद! यह सही दिखता है, मैं इसे आजमाउंगा! – markoub

+0

क्षमा करें, अतिरिक्त नोट्स ...: -/यह पता चला है कि मुझे कुछ आसान चाहिए ... मेरे पास प्रत्येक ऑफ़र के लिए सेट किए गए गुणों की बहुत विशिष्ट सूची है, और मैं बस उन्हें "विशेषता [0]" के रूप में सूचीबद्ध करना चाहता हूं, "विशेषता [1]", और इसी तरह। असल में, मुझे विभिन्न सरणी इंडेक्स का उपयोग करने की भी आवश्यकता है, लेकिन यह महत्वपूर्ण नहीं है। तो, समेकित करने के लिए, यह अधिक जटिल है, यह मुझे फ़ील्ड के सेट के साथ फ़ॉर्म के अंदर नए रूप बनाने के लिए उपयोगकर्ता विकल्प जोड़ने की अनुमति देता है। मैं सिर्फ नाम "attribute_1", "attribute_2" और इसके बजाय विशेषता एरे के बजाय प्राप्त करना चाहता हूं। – markoub

+0

यह मुझे स्पष्ट नहीं है कि आप वास्तव में क्या चाहते हैं। यदि आप फ़ॉर्म के नमूना कोड (एचटीएमएल) प्रदान कर सकते हैं क्योंकि आप इसे उत्पन्न करना चाहते हैं तो मैं आपकी मदद करने में सक्षम हो सकता हूं। –

13

पिछले उत्तर राज्यों के रूप में, संग्रह प्रकार या नेस्टेड फॉर्म का उपयोग करें, जहां प्रत्येक फ़ील्ड सरणी के एक प्रविष्टि से मेल खाता है। और जिन मामलों में आप नहीं/नहीं है कि क्या करना चाहते हैं कर सकते हैं, तो आप निम्न कर सकते हैं:

->add('attribute_0', 'text', array(
    'property_path' => 'attribute[0]', 
)) 
+0

धन्यवाद, मैंने संग्रह का उपयोग करना शुरू कर दिया। – markoub

1

इसके अलावा, आप TWIG में क्षेत्र ovveride कर सकते हैं। उदाहरण:

{{ form_row(form[field_name],{ 'full_name': 'attribute[' ~ step ~ ']' })}} 

आपका सूचकांक कहां चरण है।

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