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

rob*_*lls 1 php redirect zend-framework

什么是在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;
    }
Run Code Online (Sandbox Code Playgroud)

如果我想重定向到我可以显示如下内容的URL:

"感谢您的申请,您的参考是#123"

我该如何执行此重定向?

这样的事可能吗?

$this->_redirect('/application/confirm/'.$result);
Run Code Online (Sandbox Code Playgroud)

如果是这样,我将如何访问$resultvar?

编辑或我想这会工作:

$this->_redirect('/application/confirm/?id='.$result);
Run Code Online (Sandbox Code Playgroud)

..但我不确定这是不是最好的做法?

我见过人们_forward()用于重定向的示例,但URL永远不会改变,这会产生多个提交的问题等.

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

谢谢

Iva*_*tov 7

很多选择.您的控制器$this->_redirect()将工作委托给Zend_Controller_Action_Helper_Redirector.检查其文档中的所有选项,然后选择您喜欢的选项.最简单的方法不涉及自定义路线:

$this->_redirect('/controller/action/param1/value1/param2/value2');
Run Code Online (Sandbox Code Playgroud)

要么

$this->_redirect(
    '/controller/action',
    array('param1' => 'value1', 'param2' => 'value2')
);
Run Code Online (Sandbox Code Playgroud)

你正确地注意_redirect和之间的区别_forward.转发意味着只重新路由初始请求,同时_redirect真正导致HTTP重定向.