我们(整个团队)过去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类并在控制器中实例化它,否则全部为空。
答案 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());
}