2012-12-30 63 views
1

在Zend框架2我想從一個動作我在ZF1以下面的方式做了同樣的控制器內傳遞的參數的陣列到另一:如何將參數添加到控制器重定向?

$this->_helper->redirector->gotoSimple('foo', null, null, $params); 

和在fooAction:

$params = $this->_request->getParams(); 

在ZF2,想我在這裏看到的,因此不同的答案,我想出了以下內容:

$this->redirect()->toRoute('home/default', array(
      'controller' => 'client', 
      'action' => 'foo', 
      'param' => 'bar'), 
     array('param' => 'bar')); 

(嘗試都到$ params和$ options參數toRoute的S())

和fooAction:

$param = $this->getEvent()->getRouteMatch()->getParams(); 

$param = $this->params()->fromRoute()); 

沒有爲我工作。有沒有簡單的方法來實現我想要的(用重定向傳遞參數)還是應該使用容器,會話甚至全局變量的路線?

+0

這應該工作得很好,你確定你的路線設置正確嗎? 您是否確定您的控制器實現了InjectApplicationEvent(或擴展了ZF2 Abstract控制器) – Andrew

+0

不,我沒有在我的路線中設置參數。如果我這樣做,它確實有效。但這意味着我必須爲每個單獨的行動建立一個路徑。 ZF1的美妙之處在於你可以使用一個全部(段)路線,並在你的控制器中設置單個參數。 – tihe

+0

但是你正在使用toRoute(),顯然這需要一個工作路線;) – Andrew

回答

0

最後,我所做的是不是使用路由參數,使用查詢參數,因爲我使用的參數與路由不相關。這解決了問題。

0

你可以使用正插件:

http://framework.zend.com/manual/2.0/en/modules/zend.mvc.plugins.html#the-forward-plugin

public function someAction() 
{ 
    $returnValue = $this->forward()->dispatch('application/controller/index', array(
     'action' => 'other' 
    )); 

    return $returnValue; 
} 

public function otherAction() 
{ 
    return 99; 
} 

您可以傳遞參數也

+0

但是據我所見,爲了做到這一點,我需要在路線中設置參數。這在ZF1中並不是必需的。 – tihe

+2

這不是ZF1 :) – Andrew

相關問題