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

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

 



RSS Aktualny czas: 7.10.2025 - 01:43