Zend_Form kullanarak farklı alt / formları oluşturmak ve 1 forma hepsini bir araya getirmek için bir yolu var mı?

2 Cevap php

I'm trying to create 1 base form in Zend which is a part of many other forms. Eg: the following 3 elements could be a sub form or a mini form that is a part of a larger form : -Name -Age -Address

I just want to re-use the same form in different places - at times adding elements like 'shipping address' etc I'm getting stuck at the data submission point - when i use multiple forms, i cannot have multiple submit buttons - just one. So obviously all the data is not getting captured - just the data of the form which does contain the sub-form.

Burada herhangi bir düşünce? Ben geçmişte Zend_Form kullanmış - ama asla böyle.

2 Cevap

Tek bir Zend_Form nesne oluşturmak gerekir. Bir forma için Name, Age, ve Address append ve onlara bakmak zorunda wan normal, bu do:

$display_form = new DisplayForm();
$naa_form = new NameAgeAddressForm();
$display_form->addElements( $naa_form->getElements() );

Bir sub-form (yani tür bir alt birim olarak gruplanmış) gibi görünmek için bunları isterseniz, bunu:

$display_form = new DisplayForm();
$display_form->addSubForm( new NameAgeAddressForm() );

Böylece gibi yeniden İsim / Yaş / Adres formu ayarlama (Eğer eylem bu kodun çoğu göremiyor diye, bir uzantısı) yöntemi (init büyük olasılıkla.)

$littleForm = new Zend_Form();
$littleForm->addElement(new Zend_Form_Element_Text('name'));
$littleForm->addElement(new Zend_Form_Element_Text('age'));
$littleForm->addElement(new Zend_Form_Element_Text('address'));
$littleForm->addElement(new Zend_Form_Element_Submit('submit'));

Eğer NAA form için başka bir dekoratörler gerekmez, çünkü sen sadece dekoratör olarak FormElements ayarlamak ve NAA formdan gönderebilirsiniz düğmesini kaldırmak

$littleForm->setDecorators(array('FormElements'));
$littleForm->removeElement('submit');

Böylece gibi ekran / ana formu kurmak, ve bu ana formun unsurları yukarıdaki görüntüler böylece bir alt form olarak eklediğinizde NAA formun sırasını ayarlayın.

$bigForm = new Zend_Form();
$bigForm->addElement(new Zend_Form_Element_Text('shippingAddress'));
$bigForm->addElement(new Zend_Form_Element_Submit('submit'));
$bigForm->addSubForm($littleForm, 'littleForm', 1);

$this->view->form = $bigForm;

Görünümü komut formunu görüntülemek

echo $this->form;

Yani dekoratörler kullanarak bunu nasıl. Şahsen, ben hile ve kısmi bir komut dosyası ile benim formları görüntülemek ve sadece giriş öğeleri işlemek için dekoratörler kullanın. Muhtemelen çok etiketleri ve bir şeyler isterdim ...