没有Zend_Form,表单不会POST

时间:2012-03-31 00:08:23

标签: php zend-framework zend-form

我们(整个团队)过去2天一直在解决这个问题。出于某些奇怪的原因,除非我们创建Zend_Form类,否则我们的Zend Framework 1.11.2将不允许我们将普通表单发布到控制器中。

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-&gt; getParams()为空!

但是如果我们创建Zend_Form或以GET格式传递字段,则$ request-&gt; getParams()将填充数据。

我只是不明白。 Zend中有什么东西需要关闭才能使用普通表格吗?我们认为我们已经尝试了一切,访问全局$ _POST和$ _REQUEST变量,并调用$ request-&gt; getPost()。除非我们创建一个Zend_Form类并在控制器中实例化它,否则全部为空。

3 个答案:

答案 0 :(得分:0)

您的表单操作看起来有问题。请使用“baseUrl”View Helper或URL View Helper创建正确的操作网址:

<?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>

答案 1 :(得分:0)

  

...以GET格式传递字段,然后$ request-&gt; getParams()填充数据。

由于您正在制作表单帖子,因此您需要使用getPost()方法。

public function loginAction() 
{   
    if ($email = $this->_request->getPost('email')) {
        Zend_Debug::dump($email);
    }
}

答案 2 :(得分:0)

首先使用最新版本

Zend Framework 1.11.11

然后在loginAction

中尝试此代码
if($this->getRequest()->isPost())
{
print_r($this->_getAllParams());
}