Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Grupowanie divami o określonym ID elementów dużego formularza
darko
post
Post #1





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Witam.
Mam jeden duży formularz, z którego muszę zrobić partiale, oddzielając poszczególne grupy elementów divami z określoną wartością atrybutu ID. Próbuję tak i działa, ale tylko dla jednej grupy elementów:
  1. $add_form->addDisplayGroup(array('elem1','elem2'), 'step1');
  2. $add_form->setDecorators(array('FormElements', array('HtmlTag', array('tag'=>'div','id'=>'step1'))));

Jednak nie mogę znaleźć sposobu na dodanie kolejnych DIVów i tworzenie kolejnych grup. Próbuję tak:
  1. $display_groups = array('elem1','elem2', 'step1', 'elem3','elem4', 'step2');
  2. $add_form->addDisplayGroups($display_groups);
  3. $add_form->setDecorators(array('FormElements', array('HtmlTag', array('tag'=>'div','id'=>'step1','tag'=>'div','id'=>'step2'))));

i step2 nadpisuje step1, zamiast dodać kolejnego diva obejmującego elem3 i elem4. Kolejna kwestia: przy zastosowanym rozwiązaniu znikają mi tagi <form></form> (! ?).
Pytanie: w jaki sposób można rozwiązać powyższy problem? Chodzi o uzyskanie mniej więcej zbliżonego efektu jak poniżej (pomijam domyślne dekoratory dt i dd oraz labele):
  1. <form action="blabla" method="post">
  2. <div id="step1">
  3. <input type="text" name="elem1" />
  4. <input type="text" name="elem2" />
  5. </div>
  6. <div id="step2">
  7. <input type="text" name="elem3" />
  8. <input type="text" name="elem4" />
  9. <input type="submit" value="zapisz" />
  10. </div>
  11. </form>

ps. utworzenie kilku osobnych formularzy - zamiast jednego dużego - nie jest dla mnie żadnym rozwiązaniem.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Rozwiązanie znajdziesz u mnie na blogu. Polecam również pozostałe wpisy na temat formularzy. W zasadzie wszystko w nich jest opisane.

Odpowiedzi w skrócie:
- znacznika form nie ma, ponieważ nie dodałeś do formularza dekoratora Form.
- dla displayGroup jest odpowiednia metoda do ustawiania dekoratorów: setDisplayGroupDecorators


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
darko
post
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Czyli:

  1.  
  2. $add_form = new MyForm();
  3. $add_form->addDisplayGroup(array('elem1','elem2'), 'step1');
  4. $add_form->addDisplayGroup(array('elem3','elem4'), 'step2');
  5. $add_form->clearDecorators();
  6.  
  7. $add_form
  8. ->addDecorator('FormElements')
  9. ->addDecorator('Form');
  10.  
  11. $add_form->setDisplayGroupDecorators(array(array('FormElements')));
  12.  
  13. $add_form->getDisplayGroup('step1')->addDecorator('HtmlTag', array('tag' => 'div', 'id'=>'step1'));
  14. $add_form->getDisplayGroup('step2')->addDecorator('HtmlTag', array('tag' => 'div', 'id'=>'step2'));
  15.  
  16. $add_form->setElementDecorators(
  17. array('ViewHelper'),
  18. array('Label'),
  19. array('Errors'),
  20. array('Description')
  21. );
  22. $this->view->form = $add_form;
  23. $this->render();

~batman dzięki.


--------------------
Nie pomagam na pw, tylko forum.
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: 22.08.2025 - 10:55