开发者

Redirecting URL with variable in Zend Framework

Whats the recommended method for redirecting with variables in Zend Framework?

Lets say we have an action like this within a controller:

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

If i wanted to redirect to a URL where i could show something like:

"Thanks for your application, your reference is #123"

How should i perform this redirect?

something like this maybe?

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

If so then how would i access the $result var?

EDIT OR I guess this would work:

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

.. but i'm not sure if this is best practice or not?

I've seen examples where people use _forward() for their redirects but the URL never changes which creates issues with multiple submissions etc.

I've seen someone recommend gotoSimple() but i'm not sure about this. Still a ZF noob so apologies if this is obvious but I guess this is something with multiple uses for CRUD type systems anyway so would be intereste开发者_如何学编程d to know.

Thanks


A lot of options. Your controller's $this->_redirect() delegates the work to Zend_Controller_Action_Helper_Redirector. Check its documentation for all the options, and pick the one you like. Simplest ways not involving custom routes:

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

or

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

You're right in paying attention to the difference between _redirect and _forward. Forwarding means just re-routing the initial request, while _redirect really causes an HTTP redirect.


Not to over-simply, but have you considered putting it in $_SESSION, and then just reading it on the next page?

Page 1:

$_SESSION['foo'] = 10;

Page 2:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜