0

テストとパフォーマンスの目的で 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 を使い始めた後、それが混乱し始めた理由です。

4

1 に答える 1

1

これが本当にあなたがすべきことかどうかはわかりませんが、次のように達成できるはずだと思います:

$parameters = $this->getRequest()->getPost();
$parameters->set('subsystem', 'avia');

$parametersのインスタンスですZend\Stdlib\Parameters

于 2015-04-17T09:26:59.397 に答える