Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]Dwa razy "post" w jednej akcji
Forum PHP.pl > Forum > PHP > Frameworki
d_hrabia
Witam,
otóż mam takie pytanie - czy istnieje możliwość odebrania dwa razy różnych danych metodą post? A mianowicie...
Mam akcję poprawneAction(), w której pobieram poprzednio przesłane dane, a nastepnie te dane wyświetlam w widoku, w którym to należy je potwierdzić porzez submit button, a następnie chcę te dane wrzućić np. do bazy. Czy da się to rozwiązać w jednej akcji?

Akcja:
  1. public function poprawneAction()
  2. {
  3. $formData = $this->_request->getPost();
  4. $this->form->isValid($formData);
  5. $this->view->dane = $this->form->getValues();
  6. if ($this->_request->isPost()) // tutaj bym chciał odebrać przycisk potwierdzenia
  7. {
  8. // tutaj wrzucić dane np do bazy
  9. }
  10. }


Widok:
  1. <div>
  2. <?php // Wypisuję dane
  3. ?>
  4. <form action="<?php echo $this->url(array('action'=>'poprawne')); ?>" method="post">
  5. <div>
  6. <input type="submit" name="" value="Potwierdź" />
  7. </div>
  8. </form>
  9. </div>
zend
Najlepiej by było stworzyć dwie akcje, a żeby działało tak jak chcesz musisz dorzucić dodatkowe pole do formularza, które będzie mówić, czy to jest drugi request do tej samej akcji

Kod
if($this -> getRequest() -> isPost())
        {
            if($this -> _getParam('doubleSubmited' , false))
            {
                //zapis do bazy
            }
            
            $this -> view -> doubleSubmited = true;
        }


To dorzuć do formularza
  1. <input type="hidden" name="doubleSubmited" value="1" />
krowal
Wystarczy dać dwa pola submit z innym parametrem name i potem sprawdzić które zostało przesłane postem. Inny sposób to zapisanie przesłanych danych z pierwszego formularza w sesji a po potwierdzeniu zapisanie ich w bazie, bo po co je jeszcze raz przesyłać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.