我正在处理最后一位开发人员创建表单但不使用“$ 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"> </td>
</tr>
<tr>
.....
这意味着他不使用任何表单类但是他确实喜欢旧的php方法,但是使用zend,所以他总是返回false并且我无法修复或检测问题出在哪里?
答案 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,您必须 明确地这样做: