4

通常のブラウザではデフォルト ビューをレンダリングするが、モバイル デバイスからのリクエストの場合はモバイル ビューをレンダリングするメソッドをコントローラで実行しようとしています。

app_controller.php 内

function beforeFilter() { 
    if ($this->RequestHandler->isMobile()) {
        $this->is_mobile = true;
        $this->set('is_mobile', true );
        $this->autoRender = false;
    }
}

そしてコントローラーで:

function home(){    
    ...bunch of data grabbing stuff...

    if ($this->is_mobile){
        $this->autoRender = NULL;
        $this->layout = 'empty';
        $this->render('/mobile/home');
    } else {
        $this->layout = 'default';
    }
}

ブラウザー (モバイル デバイスに切り替えたユーザー エージェント) でヒットすると、適切なモバイル/ホーム ビュー ファイルがレンダリングされますが、その下にある通常の非モバイル ビュー ファイルもレンダリングされます。デバッグをオンにすると、モバイル ビューからの mysql トレースの下に 2 番目の「通常の」ビュー ファイルがレンダリングされていることを除いて、異常はありません。

デフォルト ビューのレンダリングを完全に無効にしてモバイルのみを表示する方法について何か考えはありますか?

4

2 に答える 2

19

オプションが「false」の場合、CakePHP はオプションを省略します。次のようにコードを変更する必要があります。

<?php

$this->autoRender = false;

?>

これにより、ビューのレンダリングが停止するはずです。

于 2013-03-27T18:48:48.353 に答える
4

特定のビューの自動レンダリングをオフにしたい場合は、追加します

$this->autoRender = false;

アプリコントローラーではなく特定のメソッドで

于 2015-06-06T09:26:17.370 に答える