2009-10-28 10 views
5

I'want प्रस्तुत करना:Zend_Form सरणी संकेतन और खाली तत्वों नाम

<input type="text" value="" name="foo[]" /> 
<input type="text" value="" name="bar[]" /> 

लेकिन Zend_Form_Element एक (स्ट्रिंग) नाम की आवश्यकता होती है, तो मैं क्या करने की जरूरत:

$this->addElement('text', '1', array(
    'belongsTo' => 'foo' 
)); 

$this->addElement('text', '2', array(
    'belongsTo' => 'bar' 
)); 

लेकिन उत्पादन होता है:

:

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-2" type="text" value="" name="bar[2]" /> 

मैं भी तरह एक निर्गम स्वीकार कर सकते हैं

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-1" type="text" value="" name="bar[1]" /> 

लेकिन Zend_Form_Element एक ही नाम

वहाँ मैं क्या जरूरत है ऐसा करने के लिए एक तरीका है के साथ तत्वों को फिर से लिखने?

+0

पर परीक्षण किया गया मैं इसे वही चाहता हूं! यदि आप इसे हल करते हैं तो कृपया मुझे बताएं। –

उत्तर

7

से अधिक मान के लिए:

$foo = new Zend_Form_Element_Text('foo'); 
// Other parameters 
$foo->setIsArray(TRUE); 
$this->addElement($foo); 

उत्पन्न करता है: name="foo[]"

-

आप इस तरह के name="foo[bar]" के रूप में दिया चाबी के लिए देख रहे हैं, उपयोग:

$bar= new Zend_Form_Element_Text('bar'); 
// Other parameters 
$bar->setBelongsTo('foo'); 
$this->addElement($bar); 

- -

जेडएफ 1.11.5

0

वर्ग MyFooForm फैली Zend_Form { सार्वजनिक समारोह init() { $ fullNameOpts = सरणी ( 'आवश्यक' => झूठी, 'लेबल' => 'पूरा नाम', 'isArray' => true, ' वैधकर्ता '=> सरणी (सरणी (' स्ट्रिंग लम्बाई ', झूठी, सरणी (1, 250)) ); $ यह-> addElement ('text', 'fullName', $ fullNameOpts); // तत्वों, रूपों और सामान के बाकी यहाँ जाता है } }

और वह करता

<dd id="fullName-element"><input type="text" class="inputAccesible" value="" id="fullName"name="fullName[]"></dd> 

यह फार्म में, Element.php पर है, लाइन 512 "isArray" चेक पैदा करता है। मैं एक नियमित zend_form का उपयोग कर रहा हूं, कस्टम सत्यापनकर्ताओं के साथ क्रॉस वैलिडेशन और मैं मुख्य रूप को दोहराने के लिए सबफॉर्म को दबा रहा हूं, क्योंकि उपयोगकर्ता एक ही रूप में कई बार जोड़ सकता है। इसके अतिरिक्त, मैं भी कस्टम सजावटी शोध करने के लिए आलसी हूं, मैंने एक बनाया है, लेकिन यह सबफॉर्म और सरणी नोटेशन को मारता है, इसलिए मैं नियमित रूप से नियमित रूप से चिपक जाता हूं, और यह हल करता है।

मैं जेएफ 1.10 पर हूं।

+0

लेकिन आम तौर पर, जब हम रिक्त सरणी नोटेशन का उपयोग करते हैं, तो हमारे पास एक ही नाम वाले कई फ़ील्ड होते हैं। यदि आप एक नए क्षेत्र को पूर्ण नाम की उम्मीद करते हुए एक ही तत्व के साथ एक नया तत्व बनाने का प्रयास करते हैं [] यह काम नहीं करता है –

+0

कुछ कोड पोस्ट करें और मैं आपको एक हाथ दूंगा :)। मैंने इस से निपटने के लिए एक lib बनाया, और मेरा अगला लक्ष्य विशेष रूप से है। आपके पास एक फॉर्म है, और आप * फॉर्म के केवल 1 तत्व को दोहराना चाहते हैं। –

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