Mam metody działania w Foo kontrolera, który wymaga parametrów:ZF2: Jak przekazać parametry do wtyczki do przodu, które mogę następnie uzyskać w metodzie, do której je przekazuję?
public function fooAction($one, $two) {
$a = one;
$b = $two;
}
I muszę przekazać do tej metody z innej metody jakiegoś Boo kontrolera. A jeden z tych parametrów musi być zgodny z parametrem. Jedynym przykładem, że the manual ma to:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
żadne dodatkowe parametry. Ale piszą one:
$ params to opcjonalna tablica parametrów, za pomocą których można wyświetlić obiekt RouteMatch o numerze dla celów tego konkretnego żądania.
Tak, próbowałem:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'one' => &$one,
'two' => $two,
));
Ale to nie działa.
Czy istnieje sposób przekazania dodatkowych parametrów do kontrolera przekazywania?
UPD:
one nie działają zbyt:
$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ć funkcjonalność chcę (przekazać parametry Europejska forward
wtyczkę), ale znalazłem inne rozwiązania. Przed wywołaniem wtyczki forward
ustawić zmienne do obiektu Request
i po forward
dostaję je z Request
w moim boo działaniu mojego 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;
rozwiązania głupi, to nie będzie działać z żądaniami Ajax. Nadal interesuje mnie przekazywanie parametrów za pomocą wtyczki do przodu. LUB MOŻLIWE, w jaki sposób uzyskać je w wersji booAction. Ponieważ nie ma nic w Request
, jeśli przekazać je z forward
.
UPD 3 i końcowa:
końcu znalazłem gdzie oni postanowili ukryć parametry mijam z wtyczką forward
. Umieszczono je w obiekcie RouteMatch
.
- Tryyyy zgadnąć, gdzie ukryliśmy twoje params ... Och, tak, są w RouteMatch
, oczywiście, że tam są, czy nie sądzisz, że coś jeszcze?
I NIE MA ŻADNYCH INFORMACJI w sekcji wtyczki forward
instrukcji!
Aby uzyskać params, muszę zrobić to w moim BooController::booAction
:
$param = $this->getEvent()->getRouteMatch()->getParam('nameOfParam');
to 'Boo' jest prawidłowym aliasem sterownika? Jak wskazano w dokumentacji 'Boo' musi być w pełni kwalifikowanym ClassName (np.' Mymodule \ Controller \ BooController') lub powinien być aliasem do tego kontrolera, który definiujesz wewnątrz swojej konfiguracji – Sam
Tak, jest to w pełni kwalifikowana nazwa klasy , to jest ''Boo \ Controller \ Boo'', który mam. Tak pisałem w pytaniu, aby było krótsze. Zmień teraz, aby uniknąć nieprzejrzystości. – Green
To wciąż jest tylko alias. Można bezpiecznie założyć, że masz skonfigurowany alias invokables z 'Boo \ Controller \ Boo' =>' Boo \ Controller \ BooController'? Poza tym twoje pierwsze podejście jest właściwe. Jak sprawdzić, czy są obecne parametry? Czy są one również zdefiniowane w konfiguracji trasy? Blog z Tihs wykorzystuje funkcjonalność, której szukasz: http://www.michaelgallego.fr/blog/2012/10/06/how-to-replace-the-action-helper-in-zf-2-and -make-great-widgetized-content / – Sam