При отправке формы не отображать данные POST - PullRequest
1 голос
/ 15 февраля 2011

У меня небольшой опыт работы с 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?

Если вам нужна дополнительная информация, я должен дать ее.

1 Ответ

1 голос
/ 15 февраля 2011

Напечатывание проблемы дает новое понимание!

Проблема в моем собственном коде. В какой-то момент я перенаправляю на ту же страницу. Перенаправление означает, что данные $ _POST также очищаются. Эти данные, конечно же, не соответствуют запросу новой страницы.

Так что, если кто-то сталкивается с этой проблемой в Zend Framework, а именно, вы не получаете POST или GET данные при отправке вашей формы, , тогда вам нужно проверить свои перенаправления.

...