【发布时间】:2012-03-31 00:08:22
【问题描述】:
过去 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 类并在控制器中实例化它,否则都是空的。
【问题讨论】:
-
这很奇怪。这不应该是一个问题。您是否尝试过设置一个普通的 ZF 应用程序来查看是否可以发帖?否则我会检查你是否有任何 Zend_Controller_Plugins 在 predispatch 钩子中进行处理。
-
使用交互式调试器时我们可以解决的问题数量之多很有趣。看看你的问题的性质,我很确定你和你的团队都没有使用调试器的习惯。我对吗? =P 我的意思是,不是 Zend_Debug::dump(),而是 Xdebug 或 Zend Debugger...
-
我们单步调试调试器。我们正在使用 Xdebug 和 Eclipse PDT。什么都没有——纳达。空 $_POST。调试转储以防万一我们跨过某些东西。 :( 新鲜的 ZF 应用程序运行良好。我们只是想深入了解它,以防 Zend_Form 错过了它。
-
您使用的是什么版本的 PHP?由于最近版本的错误修复,您可能会陷入对 PHP 和 ZF 所做的所有更改中。特别是如果你有一个修补过的 PHP 和一个旧版本的 ZF。需要考虑的事情。
-
ZF 无法知道纯 HTML 表单和
Zend_Form之间的区别,所以我不确定问题出在哪里。如果您使用livehttpheaders 或Wireshark 之类的工具,您会发现请求有什么奇怪的地方吗?
标签: php zend-framework zend-form