Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Wypełnienie formularza danymi
Forum PHP.pl > Forum > PHP > Frameworki
klapaucius
Posiadam powiedzmy formularz z 2 polami tekstowymi:

  1. class Application_Form_Formularz extends Zend_Form
  2. {
  3. public function init()
  4. {
  5. $pole1 = new Zend_Form_Element_Text('pole1');
  6. $pole2 = new Zend_Form_Element_Text('pole2');
  7. $this->addElements(array($pole1, $pole2));
  8. }
  9. }
  10.  


W kacji kontrolera posiadam tablicę asocjacyjną z danymi:
  1. $dane = array('pole1' => 'mama', 'pole2' => 'tata');

Tworzę tam również obiekt formularza:
  1. $formularz = new Zend_Form_Formularz();


I teraz pytanie: jak wypełnić ten formularz tymi danymi?
tvister
Nie pamiętam dokładnie ale jest chyba taka metoda setValue lub setDefault albo populate coś w ten deseń
Sephirus
utwórz sobie w fomularzu metodę "populateForm" i przekaż jej tablicę, następnie po prostu z tej tablicy w pętli poprzypisuj wartości danym elementom forma i tyle wink.gif

  1. class Application_Form_Formularz extends Zend_Form
  2. {
  3. public function init()
  4. {
  5. $pole1 = new Zend_Form_Element_Text('pole1');
  6. $pole2 = new Zend_Form_Element_Text('pole2');
  7. $this->addElements(array($pole1, $pole2));
  8. }
  9.  
  10. public function populateForm($data) {
  11. foreach($data AS $name => $value) {
  12. $this->getElement($name)->setValue($value);
  13. }
  14. }
  15. }
  16.  
  17. $dane = array('pole1' => 'mama', 'pole2' => 'tata');
  18. $formularz = new Zend_Form_Formularz();
  19. $formularz->init(); // nie pamiętam czy to się samo wykonywało - ale pewnie tak to jest ta linijka niepotrzebna
  20. $formularz->populateForm($dane);


To tylko idea smile.gif Oczywiście w zależności od typu pola trzeba by pokombinować czy taka metoda wystarczy (np dla MultiOptions) ale powinna.
Lysiur
  1. $dane = array('pole1' => 'mama', 'pole2' => 'tata');
  2. $formularz = new Application_Form_Formularz();
  3. $formularz->populate($dane);
klapaucius
pupulate! O to mi chodziło. Tylko zapomniałem jak się ta funkcja nazywa, a nie mogłem jej znaleźć w dokumentacji Zenda.

Wielkie dzięki!
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.