Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_form i Display Groups
Forum PHP.pl > Forum > PHP > Frameworki
matias
Czy ktoś może mi wyjaśnić czy taki kod jest poprawny ponieważ tworzy mi formularz lecz bez elementów <form></form>

Mam klasę (tylko fragment dla zobrazowania przykładu)
  1. <?php
  2. class User_CreateForm extends Zend_Form 
  3. { 
  4. public function __construct($options = null) 
  5. {  
  6. parent::__construct($options);
  7. $this ->setName('createForm')
  8. ->setAction('create')
  9. ->setAttrib('id', 'publicform');
  10.  
  11. $username  = new Zend_Form_Element_Text('username');
  12. $username ->setLabel('Login:')
  13. ->addValidator('NotEmpty')
  14. ->setRequired(true);
  15.  
  16. $email  = new Zend_Form_Element_Text('email');
  17. $email ->setLabel('Adres email:')
  18. ->addValidator('NotEmpty')
  19. ->addValidator('EmailAddress')
  20. ->setRequired(true);
  21.  
  22. $submit = new Zend_Form_Element_Image('submit');
  23. $submit ->setAttrib('class', 'login-btn')
  24. ->setAttrib('id', 'login-btn')
  25. ->setImage('../public/images/btn.gif'); 
  26.  
  27. $this->addElements(array($username, $email, $submit));
  28.  
  29. $this->addDisplayGroup(array('username', 'email'), 'subForm1st');
  30.  
  31. $this->setDisplayGroupDecorators( array(
  32. array('FormElements'),
  33. array('HtmlTag'),
  34. 'Form'
  35. ));
  36. }
  37. }
  38. ?>


W kontrolerze kod wysyłający formularz do szablonu

  1. <?php
  2. $createForm = new User_CreateForm();
  3.  
  4. $this->view->titlePage = "Rejestracja użytkownika w systemie";
  5. $this->view->titleSection = "Rejestracja";
  6.  
  7. $this->view->form1 = $createForm->subForm1st;
  8. ?>


I wyświetlam wszystko w szablonie
  1. <?php
  2. echo $this->form;
  3. ?>


W wyniku dostaję cały formularz ale niestety bez <form> </form> Czy ja coś robię nie tak?
Sabistik
Bo dobierasz się tylko do grupy elementów? i to wcale nie jest cały formularz, tylko Twoje zdefiniowane dwa elementy z trzech.

  1. <?php
  2. $this->view->form1 = $createForm->subForm1st;
  3. ?>
matias
Jak więc zbudować pełny formularz wraz z <form></form> i kilkoma grupami, ale takimi jakie ja chcę?
Sabistik
Grupujesz tak jak podałeś, dodajesz odpowiednie dekoratory, i wyświetlasz jako pełny formularz.
  1. <?php
  2. $this->view->form = $createForm;
  3. ?>
sapper
Usuń to (jeżeli nic nie kombinujesz to to ci nie potrzebne na razie smile.gif ):
  1. <?php
  2. $this->setDisplayGroupDecorators( array(
  3. array('FormElements'),
  4. array('HtmlTag'),
  5. 'Form'
  6. ));
  7. ?>

zamień to (tutaj brakuje elementu submit, chyba że button submit ma być nad inputami ):
  1. <?php
  2. $this->addDisplayGroup(array('username', 'email'), 'subForm1st');
  3. ?>

na to:
  1. <?php
  2. $this->addDisplayGroup(array('username', 'email' ,'submit'), 'subForm1st');
  3. ?>

a potem:
  1. <?php
  2. $this->view->form = new User_CreateForm();
  3. ?>

i w view sru
  1. <?php
  2. echo $this->form;
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.