Zend framework $this->;getRequest()->;isPost()返回false

Zend framework $this->;getRequest()->;isPost()返回false,zend-framework,zend-form,Zend Framework,Zend Form,我正在处理一个现有代码,上一个开发人员创建了一个表单,但没有使用“$form”,代码是: public function indexAction() { ....... $objRequest = $this->getRequest(); var_dump($objRequest->isPost()) ==> all time return false if ($objRequest->isPost()) { $posted

我正在处理一个现有代码,上一个开发人员创建了一个表单,但没有使用“$form”,代码是:

 public function indexAction() {
    .......

    $objRequest = $this->getRequest();
    var_dump($objRequest->isPost())  ==> all time return false
    if ($objRequest->isPost()) {

    $postedData = $objRequest->getPost();
    $inputData = new Zend_Filter_Input($this->filters, $this->validators,
                        $objRequest->getPost());

        $params = $this->getRequest()->getParams();
        if ($inputData->isValid()) {

   ..... 
在vie中:

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

<form name="indexFormn" id="indexForm"  method="POST" action="<?php echo $actionURL; ?>">
<div class="AdminformDiv">
    <div class="errorbox">
        <?php
        if (!is_array($this->actionErrors)) {
            echo $this->actionErrors;
        }
        ?>
    </div>
    <div>
        <table border="0" cellpadding="0" cellspacing="0" style="width:700px">
            <tbody>
                <tr>
                    <td style="width:128px">Amount</td>
                    <td colspan="2">$ <?php echo $this->price;?> USD<td     style="width:270px">&nbsp;</td>
                </tr>
                <tr>

    .....


表单具有
method=“GET”
-它不是POST表单,因此
isPost()
返回false。将其更改为
method=“POST”
,应该就可以了。

我刚刚遇到了一个类似的问题,经过数小时的搜索后找到了解决方案。检查开始和结束表单标记是否已填满表单。我不小心忘了删除以前放在视图文件中的附加关闭表单标记

我不能百分之百确定这是如何影响我的表单的,但是附加的结束表单标签将我的方法更改为“get”,即使我将其设置为post,因此当我点击submit时,它会跳过验证部分


我希望这能有所帮助。

在我的例子中,使用zend的nginx配置产生的问题:

缺少的$args未填充查询字符串:

我改变:

try_files $uri $uri/ =404;
致:

相关问题对此有更详细的解释。但基本上:

与重写不同,如果 回退不是指定的位置。如果需要保留args,则必须 明确地这样做:


不,我真的很抱歉我犯了一个错误,当我在这里发布之前进行测试时,它是“post”。所以“get”或“post”在两种情况下都返回“false”?如果在控制器中,在您现有的var_转储之上,您临时添加
var_转储($_SERVER['REQUEST_METHOD']),这给了你什么?var_dump retur me
string(3)“GET”
是的,非常奇怪?但我确信在我看来这是“post”?很难用我们掌握的信息进一步调试它。要么你发布的表单不是正在提交的表单,要么请求方法由于某种原因正在使用javascript进行更改。我理解,但在同一页面中,我确定它们只是一个表单,没有包含javascript?
try_files $uri $uri/ /index.php?$args;