我想从zend的控制器重定向到一个页面。在重定向之前,我想在请求对象中设置一些值,然后我想在我重定向的控制器上获得这些值。
我可以通过查询字符串来实现,但我不想在URL中发送这些值。
请让我知道:
- 如何在请求对象中设置这些值
- 重定向后如何得到这些值
- 我应该使用哪个方法重定向
主要目的是避免使用查询字符串。让我知道解决办法。
提前感谢。
普拉文·
如果会话是不可接受的,那么我可以看到两个方法:
-
使用_forward方法并在当前请求范围内执行新操作http://framework.zend.com/manual/en/zend.controller.action.html zend.controller.action.utilmethods
-
使用包含隐藏元素的表单的空页面,这些元素将由javascript自动提交
您是否尝试过在重定向之前使用此
$something = new Zend_Session_Namespace('abc');
$something->other = 123;
然后用
提取数据$something = new Zend_Session_Namespace('abc');
if (isset($something->other))
{
$my_var = $something->other;//that is 123
}
你可以使用Zend Flashmessenger虽然它是用来显示消息的。你也可以这样做
假设你在FooController/barAction中得到你的post值
public function barAction(){
$flashMessenger = $this->_helper->getHelper('FlashMessenger');
$val1 = $this->_request->getPost('val1');
$val2 = $this->_request->getPost('val2');
$flashMessenger->addMessage(array('val1' => $val1 ,'val2' => $val2));
$this->_redirect('somecontroller/someaction');
}
然后在某些动作中,
public function someAction(){
$flashMessenger = $this->_helper->getHelper('FlashMessenger');
$this->view->flashmsgs = $flashMessenger->getMessages(); //This will get you the array
}