У меня есть небольшой опыт работы с Zend Framework, но мне нравится играть с ним, пока он не сработает. Но теперь я не могу решить эту проблему.
У меня есть форма:
<?php class Application_Form_Login extends Zend_Form { protected $notEmpty; public function init() { // Create NotEmpty validator $notEmpty = new Zend_Validate_NotEmpty(); // Configure validators for username element $notEmpty->setMessage('Gelieve dit veld in te vullen'); $this->setMethod('post'); // emailAddress $this->addElement('text', 'emailAddress', array( 'filters' => array('StringTrim', 'StringToLower'), 'required' => true, 'validators' => array( array('validator' => $notEmpty), ), 'label' => 'Emailadres:' )); // password $this->addElement('password', 'password', array( 'filters' => array('StringTrim'), 'required' => true, 'validators' => array( array('validator' => $notEmpty), ), 'label' => 'Wachtwoord:' )); // submit $this->addElement('submit', 'submit', array( 'ignore' => true, 'label' => 'Inloggen' )); } }
Вид:
<?= $this->form ?> <?= $this->postdata ?>
И AccountController:
<?php class AccountController extends Zend_Controller_Action { public function init() { echo 'data:'.$this->getRequest()->getPost('emailAddress'); /* Initialize action controller here */ } public function indexAction() { $this->view->postdata = var_dump($this->getRequest()->getParams()); $form = new Application_Form_Login(); $request = $this->getRequest(); if ($request->isPost()){ // THIS POINT IS NEVER REACHED if ($form->isValid($request->getPost())){ if ($this->_isValidLogin($form->getValues())){ // Succes Redirect to the home page $this->_helper->redirector('index', 'home'); } else // Not succes Redirect to account page { $this->_helper->redirector('index', 'account'); } }
Как вы видите, я добавил комментарий: // ЭТОТ ТОЧКА НИКОГДА НЕ ДОСТИГАЕТСЯ. В этом контроллере есть больше функций, но это не относится к моей проблеме.
Позвольте объяснить это немного больше. Очень странное поведение заключается в том, что когда я помещаю данные в свои поля, $ this-> view-> postdata = var_dump ($ this-> getRequest () -> getParams () не возвращает POST-данных. Но когда я помещаю примечание в логин поля формы, то я вижу данные POST. Конечно, он пуст. Вот так:
array 'controller' => string 'account' (length=7) 'action' => string 'index' (length=5) 'module' => string 'default' (length=7) 'emailAddress' => string '' (length=0) 'password' => string '' (length=0) 'submit' => string 'Inloggen' (length=8)
Таким образом, // ЭТОТ ТОЧКА НИКОГДА НЕ ДОСТИГАЕТСЯ, фактически достигается при помещении данных в поля формы входа 🙂
Вопрос в том, что я делаю неправильно? Я неправильно обрабатываю Zend_Controller_Request_Http?
Если вам нужна дополнительная информация, я должен это дать.
Написание проблемы дает новые идеи!
Проблема в моем собственном коде. В какой-то момент я перенаправляюсь на ту же страницу. Переадресация означает, что данные $ _POST также очищаются. Эти данные, конечно же, не идут с новым запросом страницы.
Поэтому, если кто-то сталкивается с этой проблемой с Zend Framework, а именно, вы не получаете данных POST или GET для отправки вашей формы, вам необходимо проверить свои переадресации.