2012-02-06 69 views
0

當我點擊一個提交按鈕時,我希望頁面重定向到下一頁?如何在zend中通過控制器重定向頁面

header('Location: /pdp/policy-info.phtml'); 

我寫在控制器代碼上面的代碼,但我不能夠重定向到上面的頁面。它保持在同一頁面上。 文件名在視圖中稱爲policy-info.phtml。

同樣,一旦我重定向,我可以通過$ _POST訪問我的表單值嗎? 或者有其他選擇。

回答

7

確定這聽起來像你對我可能丟失幾個概念:

  • 你將永遠不會重定向到一個PHTML文件。 (除非你寫了一些自定義的重寫/路由規則)Zend使用MVC架構,urls以這種方式存在:

    /module/controller/view/key1/value1/keyx/valuex/
    通常zend url不會以文件擴展名結尾。你也不會直接從你的瀏覽器調用視圖文件。

  • 在表單標籤中,您可以指定表單提交到action屬性的位置。您提供的網址我假設PDP控制器和政策信息行動

 
    action="/pdp/policy-info/" 
  • 如果你想有一個表格後重定向從您的控制器提交你可以使用:
 
    $this->_redirect('/pdp/policy-info/'); 

    # maybe you want to execute some code and then execute 
    # additional code in another controller without re-bootstrapping 
    $this->_forward('policy-info', 'pdp'); 

http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.utilmethods

  • 如果您重定向,您將無法訪問您的POST,除非您在其他地方保存了這些值(如在您的會話中)。如果你轉發,我相信這些值仍然會在第二個動作中可用。
+0

唯一的選擇是redirect.since,因爲我正在做錯誤檢查和驗證,並在窗體頁面中顯示它。我希望除了會議之外還有另一種方式。你能否提供一個例子來說明如何在zend中使用$ _SESSION類似post? – Micheal 2012-02-07 00:02:18

+0

http://framework.zend.com/manual/en/zend.session.basic_usage.html將會是你最好的解釋。在zend中你通常不會使用$ _SESSION,「$ _SESSION在PHP的全局命名空間中仍然可用,開發者應該避免直接訪問它」。 – 2012-02-07 13:59:42

0

實際上可能有幾種方法可以做你想做的事情。我還沒有嘗試過這個第一種方法,但它應該工作。

  • 從控制器/行動,如果isPost()渲染一個新的教職員腳本:

    public function myAction(){ 
    $form = My_Form(); 
    $this->view->form = $form; 
    
    //if form is posted and submit = Submit 
    if ($this_request->isPost() && $this_request->getPost()->submit == 'Submit') { 
        if ($form->isValid($this->_request->getPost()) { 
        //this is where you want to capture form data 
        $data = $form->getValues(); 
        //render a new viewscript or _forward to a new action and perform your processing there. 
        $this->render('path to phtml file'); 
        //if user needs to press a button to accept submit = accept 
        ...do some more stuff... 
         } 
        }  
    } 
    

    我想,這還是有一些變化會工作。
    注意:我不認爲_forward重置請求對象,所以您的$ _POST數據不應受到影響。

此外,如果此政策的信息並不需要來自用戶的附加輸入和剛剛的信息性您可以輕鬆地只是_forward('action')到空白的行動和路由器將顯示視圖腳本。

相關問題