在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类型系统有多种用途,所以有兴趣知道。
由于
答案 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']);