パラメータを必要とするFoo Controllerに Action メソッドがあります。
public function fooAction($one, $two) {
$a = one;
$b = $two;
}
そして、 Boo Controllerの他のメソッドからそのメソッドに転送する必要があります。そして、これらのパラメーターの 1 つは参照パラメーターである必要があります。マニュアルにある唯一の例は次のとおりです。
$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,
));
しかし、うまくいきません。
追加のパラメーターを転送コントローラーに渡す方法はありますか?
更新:
これらも機能しません:
$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,
)));
更新 2:
forward
必要な機能 (プラグインでパラメーターを渡す) をまだ取得できませんが、他の解決策を見つけました。forward
プラグインを呼び出す前に、Request
オブジェクトに変数を設定し、後で Boo\Controller\BooControllerのbooアクションで変数forward
を取得します。Request
// 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
、マニュアルのプラグインセクションには何も情報がありません!
パラメータを取得するには、 my でこれを行う必要がありますBooController::booAction
:
$param = $this->getEvent()->getRouteMatch()->getParam('nameOfParam');