Форма не будет POST без Zend_Form - PullRequest
0 голосов
/ 31 марта 2012

Мы (вся команда) в течение последних 2 дней пытались решить эту проблему. По какой-то странной причине наша Zend Framework 1.11.2 не позволит нам публиковать простую форму в контроллере, пока мы не создадим класс Zend_Form.

HTML в файле просмотра (без JavaScript, ничего):

<html><body>
 <form action="/index/login/" method="post">            
    Email: <input type="text" name="email"/><br />
    Password: <input type="password" name="password" />
    <p><input type=submit name="ac" class="btn btn-success" value="Login"></p>
  </form></body></html>

Контроллер индекса:

public function loginAction() 
{   
    $request = $this->getRequest();
    if ($request->getParam('email')) {
        Zend_Debug::dump($request);
    }
}

$ request-> getParams () пусто!

Но если мы создадим Zend_Form или передадим поля как GET, тогда $ request-> getParams () будет заполнен данными.

Я просто не понимаю. Есть ли в Zend что-то, что вы должны отключить, чтобы использовать простую форму? Мы думаем, что все перепробовали, обращаясь к глобальным переменным $ _POST и $ _REQUEST и вызывая $ request-> getPost (). Все пустые, если мы не создадим класс Zend_Form и не создадим его экземпляр внутри контроллера.

Ответы [ 3 ]

0 голосов
/ 31 марта 2012

... передайте поля как GET, тогда $ request-> getParams () заполняется данными.

Поскольку вы создаете сообщение формы, вам нужно будет использоватьметод getPost().

public function loginAction() 
{   
    if ($email = $this->_request->getPost('email')) {
        Zend_Debug::dump($email);
    }
}
0 голосов
/ 01 апреля 2012

Первое использование последней версии

Zend Framework 1.11.11

Тогда попробуйте этот код внутри loginAction

if($this->getRequest()->isPost())
{
print_r($this->_getAllParams());
}
0 голосов
/ 31 марта 2012

Похоже, проблема с вашим действием формы.Используйте «BaseUrl» View Helper или URL View Helper для создания правильного URL действия:

<?php
// correct action url

$actionURL = $this->url(array(
    'controller' => 'index',
    'action'     => 'login',
    'module'     => 'default',
));

?>

<html>
    <body>
        <form action="<?php echo $actionURL; ?>" method="post">            
            Email: <input type="text" name="email"/><br />
            Password: <input type="password" name="password" />
            <p><input type=submit name="ac" class="btn btn-success" value="Login"></p>
        </form>
    </body>

...