Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Wypełnienie formularza danymi
klapaucius
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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?

Ten post edytował klapaucius 1.02.2013, 00:12:07
Go to the top of the page
+Quote Post
tvister
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


Nie pamiętam dokładnie ale jest chyba taka metoda setValue lub setDefault albo populate coś w ten deseń


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Lysiur
post
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 11
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


  1. $dane = array('pole1' => 'mama', 'pole2' => 'tata');
  2. $formularz = new Application_Form_Formularz();
  3. $formularz->populate($dane);


Ten post edytował Lysiur 1.02.2013, 11:08:08
Go to the top of the page
+Quote Post
klapaucius
post
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:09