0

わかりました、これは私をやや狂わせています。

主に iPad 向けのモバイル レイアウトを作成しました。AppController で beforeRender() 関数を使用してモバイル クライアントを検出し、それに応じてテーマを切り替えています。

iOS エミュレーターを使用してローカル開発サーバーでモバイル サイトをテストすると、すべて問題なく動作します。テーマは正しく読み込まれます。ただし、オンラインの本番サーバーでアクセスすると、モバイル テーマが読み込まれません。コンテンツは表示されますが、スタイリングはありません。

オンライン テストは次の場所にあります: http://www.anuragdesign.com/test/mbv

それはなぜでしょうか?どんな入力でも大歓迎です。

アップデート:

関連するコードは次のとおりです。

私のAppController.phpで

public function beforeRender() { 
    if($this->RequestHandler->isMobile()) {
        $this->theme = 'mobile';
    } 

}

/lib/cake/Network/CakeRequest.php

protected $_detectors = array(
    'get' => array('env' => 'REQUEST_METHOD', 'value' => 'GET'),
    'post' => array('env' => 'REQUEST_METHOD', 'value' => 'POST'),
    'put' => array('env' => 'REQUEST_METHOD', 'value' => 'PUT'),
    'delete' => array('env' => 'REQUEST_METHOD', 'value' => 'DELETE'),
    'head' => array('env' => 'REQUEST_METHOD', 'value' => 'HEAD'),
    'options' => array('env' => 'REQUEST_METHOD', 'value' => 'OPTIONS'),
    'ssl' => array('env' => 'HTTPS', 'value' => 1),
    'ajax' => array('env' => 'HTTP_X_REQUESTED_WITH', 'value' => 'XMLHttpRequest'),
    'flash' => array('env' => 'HTTP_USER_AGENT', 'pattern' => '/^(Shockwave|Adobe) Flash/'),
    'mobile' => array('env' => 'HTTP_USER_AGENT', 'options' => array(
        'AvantGo','DoCoMo', 'Fennec', 'iPad', 'J2ME', 'MIDP', 'NetFront', 'Nokia', 'Opera Mini', 'Opera Mobi', 'PalmOS', 'PalmSource',
        'portalmmm', 'Plucker', 'ReqwirelessWeb', 'SonyEricsson', 'Symbian', 'UP\\.Browser',
        'webOS', 'Windows CE', 'Windows Phone OS', 'Xiino'
    )),
    'requested' => array('param' => 'requested', 'value' => 1)
);

モバイル スタイルシートは次の場所にあります。

/app/View/Themed/mobile/webroot/css/mobile.css

レイアウト ファイルでスプラッシュ ページ/app/View/Themed/mobile/Layouts/splash.ctpが次のように呼び出されます。

<?php echo $this->Html->css(array('reset.defaults', 'mobile', 'superfish')); ?>

アップデート:

オンライン セットアップで debug($_SERVER['HTTP_USER_AGENT') を実行すると、次の出力が生成されます。

'Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'
4

1 に答える 1

0

修正(まあまあ)

いくつかの手順を実行しましたが、最終的には修正されたようです。問題は、オンラインの本番サーバーでは、テーマのフォルダーではなく、通常の webroot フォルダーからスタイル シートを提供しようとすることでした。理由はわかりませんが、どうぞ。

まず第一に、すべてのモバイル スタイルシートを複製し、それらを /app/webroot/css/ に配置します (vs は /app/View/Themed/mobile/webroot/css/ に移動する必要があります。次に、使用された要素の名前も変更しましたモバイル ビューと非モバイル ビューの両方で、モバイル ビュー (/app/View/Themed/mobile/Elements にあります) がすべて一意の名前を持つようにします。

それはうまくいったように見えましたが、全体としてかなり簡潔な解決策でした。誰かがより良い解決策を持っているなら、私は聞きたいです.

于 2012-04-26T17:46:48.773 に答える