在Zend Framework中使用变量重定向URL

时间:2010-01-12 16:48:19

标签: php zend-framework redirect

在Zend Framework中使用变量重定向的推荐方法是什么?

假设我们在控制器中有这样的动作:

 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;
    }

如果我想重定向到我可以显示类似的地址的网址:

  

“感谢您的申请,您的   引用是#123“

我应该如何执行此重定向?

这样的事可能吗?

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

如果是,那么我将如何访问$result var?

编辑或者我想这会奏效:

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

..但我不确定这是否是最佳做法?

我见过人们使用_forward()进行重定向的示例,但网址永远不会改变,这会导致多次提交等问题。

我见过有人推荐gotoSimple(),但我不确定这一点。如果这很明显,那么仍然是ZF noob如此道歉,但我想这对CRUD类型系统有多种用途,所以有兴趣知道。

由于

2 个答案:

答案 0 :(得分: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重定向。

答案 1 :(得分:1)

不要过于简单,但您是否考虑将其放入$_SESSION,然后在下一页阅读?

第1页:

$_SESSION['foo'] = 10;

第2页:

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