Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF][ZendFramework]Wyświetlanie błędów dla dynamicznych subformularzy
Forum PHP.pl > Forum > PHP > Frameworki
Geniesis
Witam,
niestety z zend1 jestem całkowicie zielony, a czas goni, dlatego postanowiłem zapytać:
mam sobie podstronę, która umożliwia dodawanie ankiet, składa się ona z 3 elem.:
informacji o ankiecie
pytań
odpowiedzi

Pierwszy elem. jest całkowicie statyczny, pozostałe dwa są dodawane po przez AJAX (przycisk dodawania pytania dodaje form. pytanie + form. odpowiedź, przycisk dodawania odpowiedzi dodaje form. odpowiedź).
Tak więc nigdy nie wiadomo ile będzie pytań jak i nie wiadomo ile odpowiedzi dla danego pytania.

w controlerze tworzę główny formularz:
  1. $form1 = new Form_Test();
  2. $this->view->form1 = $form1;

Po przez ajax dodaję kolejne pytania/odpowiedzi:
  1.  
  2. $formQuestion = new Form_Test2();
  3. $formQuestion->setElementsBelongTo("question_' . $nextQuestionIndex);
  4.  
  5. $formAnswer = new Form_Test3();
  6. $formAnswer->setElementsBelongTo("answer_' . $nextQuestionIndex . '_' . $nextAnswerIndex);
  7. //renderuje fragment html z template z pliku, dodaje w odpowiednich miejscach

Po naciśnięciu submit wykonuję:
  1. //upraszczam pętle by oddać sens tego co się dzieje
  2. for($i =1; $i <= $quantityQuestions; $i++)
  3. {
  4. $indexForm = new Form_Test2();
  5. //przypisuje formularze odpowiedzi jako subformy formularzy pytań
  6. for($j =1; $j <= $quantityAnswersForSpecQuestion; $j++)
  7. {
  8. $indexForm->addSubForm(new Form_Test3(), 'answer_' . $i . '_' . $j . ');
  9. }
  10. //przypisuje formularze pytan jako subformy formularza glownego
  11. $form1->addSubForm($indexForm, 'question_' . $i . '');
  12. }
  13.  
  14. if($form1->isValid($_POST))
  15. {
  16. var_dump('good');
  17.  
  18. } else {
  19. echo '<pre>';
  20. var_dump($form1->getMessages());
  21. echo '</pre>';
  22. }

var_dump() zwraca poprawnie tablicę z komunikatami:
  1. array(6) {
  2. ["firstForm"]=>
  3. array(1) {
  4. ["isEmpty"]=>
  5. string(36) "Value is required and can't be empty"
  6. }
  7. ["question_1"]=>
  8. array(2) {
  9. ["secondForm"]=>
  10. array(1) {
  11. ["isEmpty"]=>
  12. string(36) "Value is required and can't be empty"
  13. }
  14. ["answer_1_1"]=>
  15. array(1) {
  16. ["thirdForm"]=>
  17. array(1) {
  18. ["isEmpty"]=>
  19. string(36) "Value is required and can't be empty"
  20. }
  21. }
  22. ["answer_1_2"]=>
  23. array(1) {
  24. ["thirdForm"]=>
  25. array(1) {
  26. ["isEmpty"]=>
  27. string(36) "Value is required and can't be empty"
  28. }
  29. }
  30. }
  31. ...


Niestety wyświetlają się tylko te wiadomości, które są przypisane do głównego formularza $form1.
Czy może mnie ktoś oświecić co zrobić by wyświetlało dla wszystkich?
Jeszcze pytanie jeżeli w przyszłości chcę zrobić walidator, który wyświetli wiadomość w przypadku braku pytań to w jaki sposób mogę później umieścić tą wiadomość w konkretnym miejscu?
JakubBab
_Co do pierwszego pytania to nie wiem.

Drugie:

Zend Decorator - ViewScript. Super sprawa, daje Ci mozliwosc kontroli absolutnej nad elementami form.

Dobry Artykul nt ViewScript
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.