2013-04-04 4 views
5

मैं fieldsets साथ प्रपत्र है:ZF2 फॉर्म फ़ील्ड में सामग्री को कैसे लपेटें?

<form> 
    <fieldset> 
     <legend>Fieldset label</legend> 
     <div class="wrapper"> 
      <label><span>Elem 1</span><input type="text" name="f1[el1]" /></label> 
      <label><span>Elem 2</span><input type="text" name="f1[el2]" /></label> 
      <label><span>Elem 3</span><input type="text" name="f1[el3]" /></label> 
     <div> 
    </fielset> 
</form> 

मैं कैसे कर सकते हैं:

<form> 
    <fieldset> 
     <legend>Fieldset label</legend> 
     <label><span>Elem 1</span><input type="text" name="f1[el1]" /></label> 
     <label><span>Elem 2</span><input type="text" name="f1[el2]" /></label> 
     <label><span>Elem 3</span><input type="text" name="f1[el3]" /></label> 
    </fielset> 
</form> 

समस्या यह है कि मैं कथा के बाद सामग्री रैप करने के लिए की जरूरत है:

$formConfig = array(
    'fieldsets' => array(
     ... 
    ); 
); 

$factory = new Zend\Form\Factory(); 
$form = $factory->createForm($formConfig); 
echo $this->form($form); 

वह कुछ इस तरह renders वो करें?

उत्तर

14

एक बार आपको यह समझने की आवश्यकता है कि Zend\Form\Fieldset HTML <fieldset> के बराबर नहीं है! Zend\Form\Fieldset केवल Zend\Form\Element का संग्रह है जो आमतौर पर एक इकाई का प्रतिनिधित्व करता है और आप एक फॉर्म से डेटा के साथ कई इकाइयां प्रदान कर सकते हैं।

अब जब फॉर्म को प्रस्तुत करने की बात आती है, तो आपको सबसे पहले जो कुछ सीखना चाहिए, वह कई Zend\Form\View\Helper -Classes हैं। आप form() व्यू-हेल्पर का उपयोग कर रहे हैं, जो formRow() और सभी Zend\Form\FieldsetformCollection() का उपयोग कर सभी Zend\Form\Element का स्वचालित रूप से अनुवाद करता है। लेकिन आप ऐसा नहीं करना चाहते हैं!

जब आप अपना पसंदीदा आउटपुट चाहते हैं, तो आपको फ़ॉर्म को प्रस्तुत करने की आवश्यकता होगी। के रूप में आप formRow() का उपयोग किया था,

<?=$this->form()->openTag($form);?> 
    <fieldset> 
     <div class="wrapper"> 
      <?=$this->formRow($form->get('f1')->get('el1'));?> 
      <?=$this->formRow($form->get('f1')->get('el2'));?> 
      <?=$this->formRow($form->get('f1')->get('el3'));?> 
     </div> 
    </fieldset> 
<?=$this->form()->closeTag();?> 

अब, यह पहले से ही अंदर एक छोटे से आराम दिया गया है: कुछ इस तरह अपनी व्यू-टेम्पलेट हो सकता है। तुम भी प्रत्येक प्रपत्र पंक्ति अलग और बहुत विस्तृत रास्ते की तरह जा सकते हैं:

<label> 
    <span><?=$this->formLabel($form->get('f1')->get('el1'));?></span> 
    <?=$this->formInput($form->get('f1')->get('el1'));=> 
    <?=$this->formElementErrors($form->get('f1')->get('el1'));?> 
</label> 
वहाँ भी

, formInput() अभी भी एक जादू है कि formText(), formSelect(), formTextarea(), आदि .., आदि जैसी चीज़ों से निकला है .. फ़ील्डसेट स्पष्टीकरण के लिए

+2

+1। ZF2 समुदाय के हिस्से पर क्या एक भयंकर नामकरण पसंद है। फील्ड कोलेक्शन या कुछ कम अस्पष्ट और उलझन में क्यों नहीं जाते? – Xunnamius

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