4

我正在处理最后一个开发人员创建了一个表单但没有使用“$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,我无法修复或检测问题出在哪里?

4

3 回答 3

1

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

我不确定这对我的表单有何影响,但即使我将其设置为发布,附加的关闭表单标记也将我的方法更改为“获取”,因此当我点击提交时,它会跳过验证部分。

我希望这有帮助。

于 2014-05-07T15:42:05.437 回答
0

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

于 2013-08-21T18:09:23.263 回答
0

在我的情况下,问题来自使用 zend 的 nginx 配置:

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

我改变:

try_files $uri $uri/ =404;

至:

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

关于这个答案的问题对此有更详细的解释。但基本上:

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

于 2017-01-04T10:47:41.067 回答