テストとパフォーマンスの目的で forward プラグインを使用しています。最初にIndexController
データは通常の POST リクエストを通過します。そこで、この要求と POST データを取得し、それにもう 1 つのパラメーターを追加する必要があります。
$this->getRequest()->getPost()->subsystem = 'avia';
フォワードプラグインを使用するよりも
$result = $this->forward()->dispatch(
"Port\\Controller",
[
'controller' => 'Port\\Controller',
'action' => 'port',
]
);
そして、私がこれにいるPortController
とき、私はリクエストの POST データを再度取得し、そこに私の変更を含める必要がありますIndexController
$post = $this->getRequest()->getPost();
isset($post['subsystem']) //true
しかし、そうではありません。変更なしでリクエスト オブジェクトを取得します。
isset($post['subsystem']) //FALSE
現在のリクエストプロセスですべてのコントローラのリクエストをグローバルに変更する方法は?
私はすでに何をしようとしていますか?
//#1
$params = $this->getServiceLocator()->get('ControllerPluginManager')->get('params');
$params->getController()->getRequest()
->getPost()->subsystem
= 'avia';
//#2
$this->getRequest()->getPost()->subsystem = 'avia';
//#3
$post = $this->getRequest()->getPost();
$post['subsystem'] = 'avia';
//NEED UPDATE GLOBALLY !
$this->getRequest()->setPost($post);
//#4
$event = $this->getEvent();
$event->getRequest()->getPost()->subsystem = 'avia';
Debug::vars($event->getRequest()->getPost());
//#5
$_POST = $post->toArray();
そして、このすべての差異は機能しません。
私はすでにこの回答を読んでいます ZF2: How to pass parameters to forward plugin which can then get in the method I forward to?
しかし、params を介してデータを渡したくありません。変更要求が必要です。
UPD
しかし、今私はテストされており、受信側でこの方法でリクエストを取得しようとしたためかもしれません
$request = $this->bodyParams();
でもこんな風に使えばいいのに
if (!$request['subsystem']) {
$request = $this->getRequest()->getPost()->toArray();
}
これは、Apigility RPC サービスを使用し、JSON 形式で投稿データを POST ではなく Request Content フィールドに配置したためです。そして別の場所で私はそれを手に入れようとしました
$params = $this->serviceLocator->get('ControllerPluginManager')->get('params');
$requestContent = $params->getController()->getRequest()->getContent();
$request = Json::decode($requestContent, Json::TYPE_ARRAY);
しかし、私が POST を使い始めた後、それが混乱し始めた理由です。