0

POST フォームを介して CakePHP アプリに特定の値を投稿しています。AppController 内でこの特定の POST データを処理し、その後 $this->request->data の設定を解除します。

    if(!empty($this->request->data['Keyboard'])) {
        $this->Session->write('Keyboard.active', $this->request->data['Keyboard']['active']);
        unset($this->request->data);
    }

その後、すべてのリクエストデータを設定解除したい(したがって$this->request->data)。parent::beforefilter();子コントローラー内で、それぞれのbeforeFilter関数のコードの最初の行として呼び出しbeforeFilter、 my のappControllerが開始されていることを確認します。ただし、私の childController では、次のコード行は引き続き true と評価されます。

if($this-request->is('post'))

is('post') 呼び出しを「設定解除」するにはどうすればよいですか? 私も上記で試し$this->request->is('post') = falseましたが、if-statement成功しませんでした。

4

1 に答える 1

1

$this->request->is($anything)(少なくともあなたの場合)の「問題」は、変数を比較する関数であり、セッターではないということです。

確認したい場合のAPI コードは次のとおりです。

したがって、基本的に、このコードは変数env('REQUEST_METHOD')POST(コードの検出器部分にある) と比較します。

うまくいくはずがありません$this->request->is('post') = false。何かのようなもの

$_ENV["REQUEST_METHOD"] = null;
//or
unset($_ENV["REQUEST_METHOD"]);

リクエストデータの設定を解除すると動作する可能性がありますが、試していないため、何も保証しません。

私は、このアプローチは非常に汚いと感じています。すでに利用可能な関数がない場合、これらの変数をいじるのはまったく好きではありませんが、既存のものをいじるのを避けるために考えられるすべての選択肢を検討し、requestこれを唯一の解決策。それ以外の場合は、この主題に対処する別の質問を投稿して、より良いアプローチが登場するかどうかを確認する必要があります.

あなたの場合に役立つことを願っています。

于 2013-04-19T18:44:44.657 に答える