![]() |
![]() |
![]() ![]()
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zend_Controller_Action::_forward($action, $controller = null, $module = null, array $params = null)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz tego wszystkiego trzymać po prostu w index/index + własny routing + odpowiednie warunki dla widoku?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat 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: Ja sie z tym nie zgodze, ja (i np. Rails'y) robia tak jak piszesz, po wyslaniu blednego formularza, podpinasz ten sam tpl i wypelniasz go przeslanymi danymi. To tylko (zapewne) jedna linijka, wiec o duplikacji kodu nie ma raczej mowy (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 27.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, @dr_bonzo. Powiedzcie jeszcze jak ustawić, aby akcja process korzystała domyślnie z index.phtml, a nie z process.phtml
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 313 Pomógł: 24 Dołączył: 9.08.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
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
Ten post edytował pgrzelka 28.09.2009, 01:09:31 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 27.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem coś takiego:
Trochę pisania, ale jak ładnie? Nieprawdaż? P.S. Zaraz poklikam "POMÓGŁ". |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:59 |