2013-08-21 19 views
4

我的工作誰最後一個開發者已經創建了一個形式,但不使用「$形式」現有的代碼,該代碼是:

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,我無法修復或檢測問題在哪裏?

回答

0

表單有method="GET" - 它不是POST表單,所以這就是爲什麼isPost()返回false。將其更改爲method="POST"並且應該沒問題。

+0

沒有我真的很抱歉我犯了一個錯誤,當我測試之前發佈在這裏是「發佈」。所以「獲取」或「發佈」它返回在這兩種情況下「假」? –

+0

如果在控制器中,在你現有的var_dump之上,你暫時添加'var_dump($ _ SERVER ['REQUEST_METHOD']);',那會給你什麼? –

+0

var_dump回我'string(3)「GET」'是的很奇怪?但我確定它在我看來是「發佈」? –

0

我剛剛遇到類似的問題,經過幾個小時的搜索後發現瞭解決方案。檢查您的開始和結束窗體標籤是否已滿表格。我不小心忘了刪除我以前放在視圖文件中的一個額外的結束標籤。

我不是百分百肯定這是如何影響我的表單的,但額外的結束表單標籤已將我的方法更改爲'get',即使我將其設置爲發佈,因此當我點擊提交時,它會跳過正確的通過驗證部分。

我希望這會有所幫助。

缺少的$ args不填充查詢字符串:

0

在我的情況下,問題從nginx的配置使用Zend衍生

更改:

try_files $uri $uri/ =404; 

要:

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

about this answer有關的問題有更詳細的解釋關於那個。但基本上:

與重寫不同,如果 回退不是命名位置,$ args不會自動保留。如果你需要保存參數,你必須明確地做到這一點:

相關問題