![]() |
![]() |
![]() ![]()
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: 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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 13:19 |