2010-01-12 38 views
1

在Zend Framework中使用變量重定向的建議方法是什麼?在Zend Framework中使用變量重定向URL

假設我們有一個控制器內像這樣的動作:

public function newAction() 
    { 
     $form = new Form_ApplicationForm(); 
     if($this->_request->isPost()){ 
      $data = $_POST; 
      if($form->isValid($data)){ 
       $appModel = new Model_Application(); 
       $result = $appModel->createApplication($form->getValue('name'), 
        $form->getValue('email'), 
        $form->getValue('comments')); 
       if($result){ 
        // redirect here 
       } 
      }else{ 
       $form->populate($data); 
      } 
     } 
     $this->view->form = $form; 
    } 

如果我想重定向到URL,我可以表明這樣的:

「感謝您的申請,您的 參考號是#123「

我該如何執行此重定向?

這樣的事情也許?

$this->_redirect('/application/confirm/'.$result); 

如果是這樣,那麼我將如何訪問$result var?

編輯 OR我想這會工作:

$this->_redirect('/application/confirm/?id='.$result); 

..但我不知道這是否是最好的做法還是不?

我見過人們使用_forward()他們的重定向的例子,但URL永遠不會改變它創建我見過有人建議gotoSimple()與一稿多投等

問題,但我不知道這件事。如果這是顯而易見的,ZF noob仍然很抱歉,但我想這是CRUD類型系統的多種用途,所以有興趣知道。

感謝

回答

7

很多選擇。您的控制器的$this->_redirect()將工作委託給Zend_Controller_Action_Helper_Redirector。檢查其documentation的所有選項,並選擇一個你喜歡的。最簡單的方法不涉及定製路由:

$this->_redirect('/controller/action/param1/value1/param2/value2'); 

$this->_redirect(
    '/controller/action', 
    array('param1' => 'value1', 'param2' => 'value2') 
); 

您在關注_redirect_forward之間的差別是正確的。轉發意味着重新路由初始請求,而_redirect確實會導致HTTP重定向。

+0

感謝您的信息,有一兩件事我不知道有關,雖然是你的第一個例子,如何參數1和參數進行訪問,因爲他們無處$ _REQUEST? – robjmills 2010-01-12 20:43:42

+1

我通過$看其可用本 - > _請求 - > getParam(「參數1」),這是推薦的方法? – robjmills 2010-01-12 20:48:17

+0

請求的getQuery([字符串$鍵= NULL],[混$默認=空])返回$ _GET超全局的成員。 getParam也將工作,但它返回不僅僅是$ _GET項的更多。 – 2010-01-13 00:29:05

1

不要過於簡單,但你有沒有考慮把它在$_SESSION,然後只是讀它的下一個頁面上?

第1頁:

$_SESSION['foo'] = 10; 

第2頁:

echo htmlspecialchars($_SESSION['foo']); 
+3

不喜歡使用會話變量這樣的事情,感覺太hacky,並且意味着它不能被添加書籤。真的,我想變量在URL中,我想我可以做一些像$ this - > _ redirect('/ application/confirm /?foo ='。$結果); – robjmills 2010-01-12 16:56:53

+0

是的,這是哈克) – 2010-01-12 19:26:10