Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Przesyłanie zmiennej między akcjami.
kodereq
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 27.02.2009

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


Na początku zaznaczam, że będę stosował konwencję controller/model w celu uzyskania spójności wątku.

Problem wygląda następująco.

Jestem w index/index - user submituje formularz, który przenosi go do index/process jednocześnie wysyłając dane metodą POST. Teraz w index/process odbywa się validacja (Zend_Form + Zend_Validate). W wypadku udanej walidacji nie ma problemu, wyświetlam komunikat (za pomocą zmiennej widoku 'message'): "Dane zostały zapisane". Natomiast w wypadku niepowodzenia chciałbym przekierować na index/index - jednocześnie przekazując parametry post oraz zawartość zmiennej widoku 'message'. Co prawda, mógłbym to zrobić 'na pałę' - podpinając ten sam formularz pod index/process i po prostu wyświetlając go w widoku dla tej akcji, co jednak wydaje się lekko 'nie po Bożemu'. I tu właśnie rodzi się moje pytanie:

Jak płynnie przesyłać zmienne między akcjami jednego kontrolera ?


Moim celem jest ładna obługa formularzy, czyli formularz z index/index submituje na index/process, natomiast w wypadku nie przejścia walidacji wracamy do index/index i wyświetlamy komunikat + formularz do poprawy. Index/process odpowiada tylko za przetworzenie danych oraz wyświetlenie komunikatu powodzenia.

Może da się to zrobić bez przekierowań i ręcznego przesyłu zmiennych, może wystarczy pomajstrować przy Zend_Form + Zend_Validate?

Bardzo proszę o sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pgrzelka
post
Post #2





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


Cytat(kodereq @ 27.09.2009, 18:13:52 ) *
Dzięki, @dr_bonzo. Powiedzcie jeszcze jak ustawić, aby akcja process korzystała domyślnie z index.phtml, a nie z process.phtml


http://framework.zend.com/manual/en/zend.c...rs.viewrenderer

choć uważam że trochę źle to robisz (IMG:style_emoticons/default/winksmiley.jpg)
moja przykładowa akcja dodawania jakiegoś rekordu
  1. public function addAction()
  2. {
  3. $this->_helper->viewRenderer->setNoRender();
  4.  
  5. // tu mamy formularz
  6. $form = new Admin_Form_Menu();
  7.  
  8. if ($this->_request->isPost() && $form->isValid($_POST))
  9. {
  10. $model = new Admin_Model_Navigation();
  11. $model -> savemenu($form->getValues());
  12. $this->_redirect (
  13. $this->view->url ( array( 'action'=>'index' ) ),
  14. $this->__('Menu dodane'),
  15. 'infomsg'
  16. );
  17. }
  18. else
  19. {
  20. echo $form;
  21. }
  22.  
  23. }


Ten post edytował pgrzelka 28.09.2009, 01:09:31
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 21:27