0

なぜこれが機能しないのかわかりません!AppController 内の beforeFilter() 関数に以下のコードがあります。CakePHP 2.2.2 を使用しています。「$this->RequestHandler->isMobile()」を使い始めましたが、エラーが発生しました。CakePHP の Web サイトを見ると、呼び出しが以下のように変更されていることがわかりました。

ただし、これは機能しません。iPhone でサイトを表示すると、ビュー ファイルに設定されたテスト メッセージがエコーされるだけですが、それでもサイト全体の default.cpt ファイルに移動します。 autoRender コマンド?

それで、私が間違っていること、または私がすべきことをしていないことはありますか?

  if($this->request->is('mobile')) {
      $this->isMobile = true;
      $this->set('isMobile', true );
      $this->autoRender = false;
      $this->render('../mobile/test');
   }

どうもありがとうグレン。

4

3 に答える 3

3

このようなことを試しましたか?テストすることはできませんが、動作するはずです。

public $components = array('RequestHandler');

public function beforeFilter() {
    if ($this->RequestHandler->is('mobile')) {
        // Execute code only if client accepts is mobile
    } else {
        // Execute Normal Code
    }
}
于 2012-10-01T14:56:05.717 に答える
2

よく書かれたドキュメントに従って、次のことができます。

if ($this->request->is('mobile')) {
    $this->isMobile = true;
    ...
}

http://book.cakephp.org/2.0/en/controllers/request-response.html#inspecting-the-request

これが、これを行う新しい 2.x スタイルになります。requesthandler コンポーネントはここでは単なるラッパーであり、いつかラッパー アクセスを非推奨にする可能性があります。

于 2012-10-01T15:23:22.180 に答える
0

Cake php 2.x の場合、コントローラーの上部でこれを使用します

public $components = array('RequestHandler');

そして、任意のアクション内でこれを使用します

 if ($this->RequestHandler->isMobile()) {

// ここに条件が入ります

}

于 2014-03-27T12:19:03.013 に答える