$ this-> getRequest() - > isPost()返回false

时间:2013-08-21 17:28:46

标签: zend-framework zend-form

我正在处理最后一位开发人员创建表单但不使用“$ 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>

    .....

这意味着他不使用任何表单类但是他确实喜欢旧的php方法,但是使用zend,所以他总是返回false并且我无法修复或检测问题出在哪里?

3 个答案:

答案 0 :(得分:0)

表单有method="GET" - 它不是POST表单,因此isPost()返回false的原因。将其更改为method="POST",它应该没问题。

答案 1 :(得分:0)

我刚遇到类似的问题,经过数小时的搜索后找到了解决方案。检查您的开始和结束表单标签是否正在填写表格。我不小心忘记删除我之前放在视图文件中的其他结束表单标记。

我不是百分之百确定这会影响我的表单,但是额外的关闭表单标签将我的方法改为'get',即使我将其设置为post,因此当我点击提交时,它会跳过通过验证部分

我希望这会有所帮助。

答案 2 :(得分:0)

在我的情况下,使用zend:

从nginx配置派生的问题

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

我改变了:

try_files $uri $uri/ =404;

要:

try_files $uri $uri/ /index.php?$args;

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

  

与重写不同,$ args不会自动保留   后备不是命名位置。如果您需要保留args,您必须   明确地这样做: