![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 1 Dołączył: 2.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam Symfony 1.1 i problem z przesłaniem danych pochodzących z formularza do następnej Akcji. Mianowicie, gdy formularz jest submitowany to wywołuje stronę www.sss.pl/submit na której dane przechodzą walidacje i gdy przejdą chce przekazać na inną strone te dane z formularza poprzez POST Ale nie wiem jak w symfony zrobić aby mógł przekazać dalej dane pochodzące z formularza z jednej akcji do następnej akcji (z strony www.sss.pl/submit do www.sss.pl/finish). Kod ten zwraca dane z formularza w postaci array i te dane bym chciał przekazać na inna stronę (inna akcje) przez POST. Symfony posiada możliwość pojedyncze dodawanie wartości
ale ja posiadam tablice z wartościami i nie chce sie bawic w reczne dodawanie tylko chce cała tablice przekazać i naj lepiej przez metody symfony ale szukałem i nie znalazłem jakoś ![]() Kod poniższy prześle dane przez GET a ja chce przez POST
Ten kod poprostu przekazuje dane z formularza poprzez GET http://localhost/sss/web/frontend_dev.php/...odstawoe//opis/ Ten post edytował kaniagandzowski 31.07.2008, 21:46:42 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
zamiast $this->redirect uzyj $this->forward('nazwa_modulu', 'nazwa_akcji');
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 1 Dołączył: 2.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
zamiast $this->redirect uzyj $this->forward('nazwa_modulu', 'nazwa_akcji'); Te polecenie ma podobne działanie do
tylko że tamto polecenie przenosi do inne akcji nie zmieniając adresu strony. A z przekazanie parametrów do innej akcji to już nie bardzo wiem jak to zrobić abym przekazał tą tablice danych z formularza, z której później w innej akcji mógł sobie normalnie pobrać te dane z formularza w ten oto sposób
Ten post edytował kaniagandzowski 1.08.2008, 08:16:32 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Te polecenie ma podobne działanie do No właśnie nie chodzi to o zmianę adresu strony bo nie to jest istotą działania forward().
tylko że tamto polecenie przenosi do inne akcji nie zmieniając adresu strony. forward() powoduje przekazanie tego samego żądania do innej akcji, dzięki czemu nadal masz dostęp do parametrów żądania i możesz je sobie wydobyć. redirect() powoduje przekierowanie do innej akcji tworząc kolejne żądanie do aplikacji, dlatego po redirect() nie masz dostępu do żądania, które Cie interesuje. Poza tym pamiętaj że symfony posiada coś takiego jak pamięć Flash, w której możesz umieścić parametry widoczne w jednym żądaniu po redirect() Taka pamięć tymczasowa na potrzeby kolejnego żądania. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 1 Dołączył: 2.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
No tego nie wiedziałem.
Ale jest problem tego typu gdy użytkownik odświeży stronę to znowu pojawi się formularz a nie strona wyświetlana po przesłaniu danych z formularza (strona wyświetlająca dane z formularza). Takie zachowanie z kilku względów jest nie pożądane dla mnie. Wiem że w symfony jest zmienne (flash), która służy do jednego razowego użycia ale nie podoba mi się to szczerze. Kurna szukałem w symfony dokumentacji API ale nic nie znalazłem. Bardzo bym chciał żeby jednak była możliwość przeniesienie tych danych z formularza na inna stronę (inna akcje), której póżniej bym mógł te dane wydobywać tak jak na poprzedniej stronie tzn.
W sumie symfony ma możliwość pojedyczo przesyłania danych
Ale nie znalazłem metody której bym mógł przekazać tablice z wartościami abym sie nie musiał bawić w jakieś ręczne dodawanie. |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wiem że w symfony jest zmienne (flash), która służy do jednego razowego użycia ale nie podoba mi się to szczerze. No to już Twój problem. Mechanizm flash został stworzony do tego czego własnie potrzebujesz.Podobne rzeczy są również w innych framwerokach. Jesli Ci się nie podoba to kombinuj dalej, nie rozumie tylko dlaczego odrzucasz dedykowane do tego rozwiązanie. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Obiekt request jest tworzony tylko i wyłącznie na jedno żądanie. Jeśli w akcji submit ustawisz sobie jakiekolwiek parametry dla requestu i następnie zrobisz przekierowanie, to jest to całkiem nowe żądanie i nowy obiekt request, więc dane w żaden sposób się nie przeniosą. Nie jest to brak sf, bo nie da się tego zrobić (chyba, że o czymś nie wiem).
Sposób, który podał mike jest rozwiązaniem Twojego problemu. Jeśli chodzi o wpisanie wszystkich wartości z formularza do requestu to:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 1 Dołączył: 2.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za pomoc.
Co do Mechanizmu flash to może jest stosowany ale dlaczego nie zastosowali to w przykładzie podanej na stronie symfony (http://www.symfony-project.org/snippets/snippet/305 ) jeśli lepsze jest flash zastosować. W każdym razie nie mam doświadczenia w pisaniu programów na tyle żeby wiedzieć o takich sprawach. Ale to już nie ważne i zrobię to jak podał mike Ten post edytował kaniagandzowski 1.08.2008, 14:07:55 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Nie zastosowali ponieważ oni nie przesyłają tam danych z formularza do innej strony.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 1 Dołączył: 2.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pokręciłem z przykładem. Chodziło o ten przykład Kurs tworzenia formularza w Symfony 1.1 w punkcie 2.3 (Listing 2-3 - Implementing Validation in the contact Module)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 23:36 |