ZF2: Как передать параметры в плагин forward, который я затем могу получить в методе, которому я их перенаправляю?
У меня есть метод действия вFoo Контроллер, которому требуются параметры:
public function fooAction($one, $two) {
$a = one;
$b = $two;
}
И мне нужно перейти к этому методу из другого метода некоторыхБу Контроллер. И один из этих параметров должен быть ссылочным параметром. Единственный пример, которыйруководство имеет это:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
Никаких дополнительных параметров. Но они пишут:
$ params - это необязательный массив параметров, с помощью которого можно увидеть объект RouteMatch для целей этого конкретного запроса.
Итак, я попробовал:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'one' => &$one,
'two' => $two,
));
Но это не работает.
Есть ли способ передать дополнительные параметры в контроллер пересылки?
UPD:
Они тоже не работают:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'params' => array(
'one' => &$one,
'two' => $two,
)));
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'options' => array(
'one' => &$one,
'two' => $two,
)));
UPD 2:
Я все еще не могу получить функциональность, которую я хочу (чтобы передать параметры сforward
плагин) но я нашел другие решения. Прежде чем позвонитьforward
Плагин Я устанавливаю переменные вRequest
объект и послеforward
Я получаю их отRequest
в моембу Действие моегоBoo \ Controller \ BooController:
// in Foo::fooAction
$this->getRequest()->one = &$one;
$this->getRequest()->two = $two;
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
// in Boo::booAction
$a = $this->getRequest()->one;
$b = $this->getRequest()->two;
Глупое решение, оно не будет работать с Ajax-запросами. Еще интересно как передать параметры с помощью плагина forward. ИЛИ МОЖЕТ, как получить их вbooAction, Потому что нет ничего вRequest
если я передам их сforward
.
UPD 3 и финал:
Я наконец нашел, где они решили скрыть параметры, которые я передаю сforward
плагин. Они положили их вRouteMatch
объект.
- Попробуй угадать, где мы спрятали твои параметры ... О да, они вRouteMatch
Конечно, они там, ты не думал что-то еще?
И НИКАКОЙ информации вforward
плагин раздел руководства!
Чтобы получить параметры, я должен сделать это в моемBooController::booAction
:
$param = $this->getEvent()->getRouteMatch()->getParam('nameOfParam');