Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony] Przesłanie danych metodą POST z Action do Aciton
kaniagandzowski
post
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
  1. <?php
  2. $this->objForm->getValues()
  3. ?>
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
  1. <?php
  2. $this->getRequest()->setParameter($name, $value);
  3. ?>

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ś (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Kod poniższy prześle dane przez GET a ja chce przez POST

  1. <?php
  2. public function executeIndex($request)
  3. {
  4. $this->objForm = new GeneratorForm( );
  5. $this->objForm->setUslugiOpcje( $this->getDane_Lokal() );
  6.  
  7. if ( $this->getRequest()->isMethod('post') )
  8. {
  9. $this->objForm->bind( $this->getRequest()->getParameter('contact'), $request->getFiles('contact') );
  10. if ( $this->objForm->isValid() )
  11. { 
  12. $this->dispatcher =  $this->objForm->getValues();
  13.  $this->redirect('test/finish?'.http_build_query( $this->objForm->getValues() ),'post=true');
  14. }
  15. }
  16. echo '<pre>';
  17.  // print_r ($this->objForm->getErrorSchema()->getErrors() );
  18. foreach ($this->objForm->getErrorSchema() as $sError) { 
  19. echo '<li>'.($sError).'</li>';}
  20.  
  21. echo '</pre>';
  22. }
  23. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kaniagandzowski
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

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


Cytat(yankes @ 1.08.2008, 02:41:06 ) *
zamiast $this->redirect uzyj $this->forward('nazwa_modulu', 'nazwa_akcji');


Te polecenie ma podobne działanie do
  1. <?php
  2. $this->redirect('nazwa_modulu', 'nazwa_akcji');
  3. ?>

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
  1. <?php
  2. $this->getRequest()->getParameter('imie');
  3. ?>


Ten post edytował kaniagandzowski 1.08.2008, 08:16:32
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(kaniagandzowski @ 1.08.2008, 09:15:48 ) *
Te polecenie ma podobne działanie do
  1. <?php
  2. $this->redirect('nazwa_modulu', 'nazwa_akcji');
  3. ?>

tylko że tamto polecenie przenosi do inne akcji nie zmieniając adresu strony.
No właśnie nie chodzi to o zmianę adresu strony bo nie to jest istotą działania forward().
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.
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: 27.12.2025 - 12:22