Zend -在请求对象中发送值并在控制器或视图上访问它


Zend - Sending value in request object and accessing it on controller or View

我想从zend的控制器重定向到一个页面。在重定向之前,我想在请求对象中设置一些值,然后我想在我重定向的控制器上获得这些值。

我可以通过查询字符串来实现,但我不想在URL中发送这些值。

请让我知道:

  1. 如何在请求对象中设置这些值
  2. 重定向后如何得到这些值
  3. 我应该使用哪个方法重定向

主要目的是避免使用查询字符串。让我知道解决办法。

提前感谢。

普拉文·

如果会话是不可接受的,那么我可以看到两个方法:

  1. 使用_forward方法并在当前请求范围内执行新操作http://framework.zend.com/manual/en/zend.controller.action.html zend.controller.action.utilmethods

  2. 使用包含隐藏元素的表单的空页面,这些元素将由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  
}