Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF][ZendFramework] Walidacja formularza w innym kontrolerze
Vill
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 22.05.2009

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


Mam w jednym kontrolerze różne formularze. Każdy formularz ma akcję, która buduje formularz oraz akcję, która jest umieszczana w parametrze action formularza i zajmuje się przetworzeniem danych z formularza. Gdy zbudowanie formularza + walidacja + przetworzenie danych znajdowały się w jednym kontrolerze to walidacja formularza działała bez problemu, natomiast gdy rozdzieliłam budowe formularza i przetworzenie danych na osobne akcje, walidacja przestała działać. Dlaczego i jak zrobić żeby w ten sposób działała?

Mam mniejwięcej coś takiego:

Inicjalizacja formularza w kontrolerze
  1. public $form;
  2.  
  3. //inicjalizacja kontrolera
  4. public function init() {
  5.  
  6. $this->form = new Zend_Form();
  7.  
  8. }


zbudowanie formularza

  1.  
  2. public function formAction(){
  3.  
  4. $this->form->setMethod('post')
  5. ->setAction('/client/formdata');
  6.  
  7. //elementy
  8. $login = $this->form->createElement('text', 'login', array('label' => 'Login:'));
  9. ....
  10. //walidatory
  11. $login->addValidator('stringLength', true, array(2, 20));
  12. ....
  13. //filtry
  14. $login->addFilters(array('StringTrim', 'StripTags'));
  15. ....
  16.  
  17. //złożenie formularza
  18. $this->form->addElement($login)
  19. ....
  20. ->addElement($submit);
  21.  
  22. //przekazanie formularza do widoku
  23. $this->view->form = $this->form;
  24.  
  25.  
  26. }


action formularza:

  1.  
  2. public function formdataAction(){
  3.  
  4. if ($this->_request->isPost() && $this->form->isValid($_POST)) {
  5.  
  6. ..przetworzenie danych...
  7.  
  8. } else {
  9. $this->view->alert = '<div class="red-alert">Błąd. Sprawdź poprawność danych</div>';
  10. }
  11. }


Co trzeba zrobić aby walidacja zadziałała, albo chociaż żeby formularz nie przepuszczał niepoprawnych danych? W tym momencie pozwala zapisywać w bazie wszystko.
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: 15.09.2025 - 02:24