Zend Framework űrlap és a dekorátorok


Sok PHP fejlesztőnek nem tetszik az űrlap készítés Zend_Form segítségével.
Nekem is többször meggyűlt vele a bajom.

Később rájöttem, hogy nagyszerű dolog, a szerveroldali validációt helyben meg lehet oldani.

Gondot okoz, hogy a megjelenített HTML kód tele van szórva <dd>, <dt> tagokkal.

Ebben az írásban bemutatva a megjelenítési mód: http://devzone.zend.com/1240/decorators-with-zend_form/

Saját példa, egy Általános Szerződési Feltételek elfogadását vizsgáló checkbox:

        $accept_terms = $this->createElement('checkbox', 'accept_terms');
        $accept_terms->setDecorators(array('Errors','ViewHelper'));
        $accept_terms->setRequired('true');
        $accept_terms->setUncheckedValue(null);
        $accept_terms->addErrorMessage('Csak akkor küldhető el az űrlap, ha elfogadja az Általános Szolgáltatási Feltételeket!');
        $this->addElement($accept_terms);

A dekorátorokat átrendeztem, előbb van a hiba üzenet megjelenítés, azután a form elem, a <dt>,<dd> elemek nem jelennek meg.

Zend Framework: Rádió gombok egyedi megjelenítése a template-ben

Belefutottam egy olyan esetbe, hogy a rádiógombokat külön kellett megjeleníteni a sablonban a design miatt.

A formRadio helpert kellett elővenni, használni.

Az ötletet a Stackoverflow-n találtam:
http://stackoverflow.com/questions/8257466/zend-how-to-get-individual-radio-button-in-viewscript
http://stackoverflow.com/questions/3962081/edit-individual-radio-buttons-in-zend-form-view-script
http://framework.zend.com/apidoc/2.0/classes/Zend.Form.View.Helper.FormRadio.html

Minta:

A form a View-nak átadott űrlap: $this->view->form = $form;
A radio_choice az űrlap egyik eleme.

 

               formRadio(
                            $this->form->radio_choice->getFullyQualifiedName(),
                            $this->form->radio_choice->getValue(),
                            null,
                            array(1 => $this->form->radio_choice->getMultiOption(1))
                    );
                    ?>
                                        formRadio(
                            $this->form->radio_choice->getFullyQualifiedName(),
                            $this->form->radio_choice->getValue(),
                            null,
                            array(2 => $this->form->radio_choice->getMultiOption(2))
                    );
                    ?>