ZF2: Jak przekazać parametry do przekazania wtyczki, którą mogę następnie zastosować w metodzie, do której je przekazuję?
Mam metodę akcji wbla Kontroler, który wymaga parametrów:
public function fooAction($one, $two) {
$a = one;
$b = $two;
}
I muszę przejść do tej metody z innej metody niektórychGwizd Kontroler. A jeden z tych parametrów musi być parametrem odniesienia. Jedyny przykładinstrukcja ma to:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
Brak dodatkowych parametrów. Ale piszą:
$ params to opcjonalna tablica parametrów, za pomocą której można zobaczyć obiekt RouteMatch dla celów tego konkretnego żądania.
Próbowałem więc:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'one' => &$one,
'two' => $two,
));
Ale to nie działa.
Czy jest jakiś sposób na przekazanie dodatkowych parametrów do kontrolera przekazywania?
UPD:
Te też nie działają:
$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:
Nadal nie mogę uzyskać żądanej funkcjonalności (aby przekazać parametry za pomocąforward
wtyczka), ale znalazłem inne rozwiązania. Przed wywołaniemforward
plugin Ustawiam zmienne naRequest
obiekt i poforward
Dostaję je odRequest
w moimgwizd Akcja mojegoBoo 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;
Głupie rozwiązanie, nie będzie działać z żądaniami Ajax. Nadal interesuje mnie, jak przekazywać parametry za pomocą wtyczki forward. LUB MOŻESZ je zdobyćbooAction. Ponieważ nie ma niczego wRequest
jeśli podam je zforward
.
UPD 3 i Final:
W końcu znalazłem miejsce, w którym zdecydowali się ukryć parametry, które przekazuję za pomocąforward
podłącz. Włożyli je doRouteMatch
obiekt.
- Tryyyy zgadnij, gdzie ukryliśmy twoje paramy ... Och, tak, są wRouteMatch
, oczywiście, że tam są, nie myślałeś coś jeszcze?
I żadnych informacji wforward
sekcja wtyczki instrukcji!
Aby uzyskać params, muszę to zrobić w moimBooController::booAction
:
$param = $this->getEvent()->getRouteMatch()->getParam('nameOfParam');