Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zend_Form - raz działa, a raz nie
KOMPsognat
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.10.2006

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


Zdaję sobie sprawę z tego, że nazwa tematu wiele nie mówi. Niestety nic lepszego nie wpadło mi do głowy.

Zend Framework poznaję od niedawna i problemów mi nie sprawia prócz jednego modułu - Zend_Form. Ale do rzeczy:

1. logowanie do systemu wykonałem w następujący sposób:
Administration_LoginController:
  1. <?php
  2.  
  3. class Administration_LoginController extends Zend_Controller_Action {
  4. public function init() {
  5. $this->_helper->layout()->setLayout('login');
  6. $this->_auth = Zend_Auth::getInstance();
  7. }
  8.  
  9. public function indexAction() {
  10. $this->view->form = $this->getForm()->render();
  11. }
  12.  
  13. protected function getForm() {
  14. $form = new Zend_Form();
  15. $form->setAction('/administracja/logowanie')
  16.  ->setMethod('get');
  17.  
  18. $username = $form->createElement('text', 'login', array('label' => 'Login:'));
  19. $username->setRequired(true);
  20.  
  21. $password = $form->createElement('password', 'password', array('label' => 'Hasło:'));
  22. $password->setRequired(true);
  23.  
  24. $form->addElement($username)
  25.  ->addElement($password)
  26.  ->addElement('submit', 'zaloguj', array('label' => 'Zaloguj'));
  27. return $form;
  28. }
  29.  
  30. public function loginAction() {
  31. $this->view->status = 1;
  32. if (!$this->getRequest()->isPost()) {
  33. return $this->_forward('index');
  34. }
  35. $form = $this->getForm();
  36. if (!$form->isValid($_POST)) {
  37. $this->view->form = $form->render();
  38. $this->render('index');
  39. } else {
  40. $values = $form->getValues();
  41. $authAdapter = Zend_Registry::get('auth');
  42. $authAdapter->setIdentity($values['login'])
  43. ->setCredential($values['password']);
  44. $result = $this->_auth->authenticate($authAdapter);
  45. if(!$result->isValid()) {
  46. $this->view->status = 0;
  47. return $this->_forward('index');
  48. } else {
  49. $this->_redirect('/administracja');
  50. }
  51. }
  52. }
  53.  
  54. public function logoutAction() {
  55. $this->_auth->clearIdentity();
  56. $this->_redirect('/administracja');
  57. }
  58. }
  59. ?>


Router oczywiście przepisuje adresy pod odpowiednie akcje. I całośc działa świetnie.

2. Na jednej ze stron panelu administracyjnego chcę zrobić formularz do nadawania uprawnień użytkownikom. Teoretycznie żaden problem jednak jakimś cudem dane nie chcą przejść. Wkleiłem więc IDENTYCZNY (jak w kontrolerze powyżej) formularz do tego panelu. Efekt? "Proteza" w UserController nie dziala. ohmy.gif
Administration_UserController:
  1. <?php
  2.  
  3. class Administration_UserController extends Zend_Controller_Action {
  4. public function init() {
  5. $this->_helper->layout()->setLayout('administration');
  6. $this->_auth = Zend_Auth::getInstance();
  7. if (!$this->_auth->hasIdentity()) {
  8. $this->_redirect('/administracja/logowanie');
  9. } else {
  10. $this->_model['users'] = new Users();
  11. $this->user = $this->_model['users']->getUserInfo($this->_auth->getIdentity());
  12. $this->view->user = $this->user;
  13. }
  14. }
  15.  
  16. public function getForm() {
  17. $form = new Zend_Form();
  18. $form->setAction('/administracja/uzytkownicy/zatwierdz')
  19.  ->setMethod('get');
  20.  
  21. $username = $form->createElement('text', 'login', array('label' => 'Login:'));
  22.  
  23. $password = $form->createElement('password', 'password', array('label' => 'Hasło:'));
  24.  
  25. $form->addElement($username)
  26.  ->addElement($password)
  27.  ->addElement('submit', 'zaloguj', array('label' => 'Zaloguj'));
  28. return $form;
  29. }
  30.  
  31. public function saveAction() {
  32. $form = $this->getForm();
  33. $values = $form->getValues();
  34. if (!$form->isValid($_POST)) {
  35. echo '?';
  36. } else {
  37. print_r($values);
  38. }
  39. }
  40.  
  41. public function editAction() {
  42. $user = $this->_model['users']->find($this->getRequest()->getParam('nick'))->current();
  43. $this->view->user = $user;
  44. $form = $this->getForm();
  45. $this->view->form = $form->render();
  46. }
  47. }
  48. ?>


/administracja/uzytkownicy/zatwierdz - akcja save usercontrollera.

3. Po wysłaniu formularza z UserController efekt jest... o taki:
Kod
Array ( [login] => [password] => [zaloguj] => )


A na zakończenie, niczym prostak czekający aż ktoś zrobi coś za niego:
Liczę na szybką odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sapper
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.05.2008

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


Hmm.
Formularz wysyła dane getem
  1. <?php
  2. ->setMethod('get');
  3. ?>


a ty odbierasz je postem
  1. <?php
  2. if (!$form->isValid($_POST)) {
  3. ?>


albo GET albo POST lub REQUEST cool.gif

Ten post edytował sapper 29.06.2008, 08:46:39
Go to the top of the page
+Quote Post
chlebik
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

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


I zasadniczo zgodnie z obiektowka: $this->_request->getPost().


--------------------
"Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog
KulturalnyChlebik
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:03