0

別のモバイル ビューをロードしようとしていますが、問題が発生しています。モバイルレイアウトを機能させることはできますが、ビューはできません。

この質問を参考にして、cakephp 2.1 CakePHP ウェブサイト モバイル版を実行しています。

モバイル ビューを構成する方法がわかりません。

/app/View/name/mobile/view.ctp または /app/View/mobile/name/view.ctp または何か他のものですか。私はこれを理解しようとして円を描いてきました。助言がありますか。

私のAppController.php

フィルター前

    パブリック関数 beforeFilter() {    


        /* モバイル レイアウトのテスト */

        if ($this->request->isMobile()){
            $this->is_mobile = true;
                $this->set('is_mobile', true );
                $this->autoRender = false;
        } そうしないと {
             $this->set('is_mobile', false );
        }

    }

After Filter (短縮)

関数 afterFilter() {
    $view_file = file_exists(
                            "/var/www" .
                            $this->webroot .  
                            "アプリ" 。DS。  
                            '意見' 。DS。
                            $this->name . DS。
                            'モバイル/' 。
                            $this->action .
                            「.ctp」
                            );

$layout_file = file_exists(
                            "/var/www" .
                            $this->webroot .
                            "アプリ" 。DS。
                            '意見' 。DS。
                            「レイアウト」 . DS。
                            'モバイル/' 。
                            $this->layout .
                            「.ctp」
                            );

if($view_file || $layout_file){         
 $this->render(
             $this->アクション、
             ($layout_file?'mobile/':'').$this->layout,
             ($view_file?'mobile/':'').$this->アクション
              );
 }
}   
4

2 に答える 2

1

以前のバージョンのCakePHPでは、$ this-> render()には3つのパラメーターがありましたが、2.x以降では、2つしかありません。

コントローラrender()用のCakePHP 1.3 API-3つのパラメータがあります:

http://api13.cakephp.org/class/controller#method-Controllerrender

コントローラrender()用のCakePHP2.0API-パラメータは2つだけです。

http://api20.cakephp.org/class/controller#method-Controllerrender

そのため、2つのパラメーターのみを使用した回答は、3を使用した試行よりもはるかにうまく機能します。:)

(CakePHP Bookには、まだ3つのパラメーターがあると誤って記載されているので、言及されているように試してみたことであなたを責めることはありませんが、これを見つけるためにさらに詳細に調べる必要がありました)

于 2013-01-04T18:18:56.957 に答える
0

私はこれを以下にしました。ビュー フォルダがモバイル フォルダをチェックし、存在する場合はビューをロードするようになりました。

    関数 afterFilter() {
        // モバイル モードの場合は、有効なビューを確認して使用します
      if (isset($this->is_mobile) && $this->is_mobile) {

        $has_mobile_view_file = file_exists( ROOT . DS . APP_DIR . DS . 'View' . DS . $this->name . DS . 'mobile' . DS . $this->action . '.ctp' );
        $has_mobile_layout_file = file_exists( ROOT . DS . APP_DIR . DS . 'View' . DS . 'Layouts' . DS . 'mobile' . DS . $this->layout . '.ctp' );

        $view_file = ( $has_mobile_view_file ? 'モバイル' . DS: '' ) . $this->action;
        $layout_file = ( $has_mobile_layout_file ? 'モバイル' . DS: '' ) . $this->レイアウト;

        $this->render( $view_file, $layout_file );

  }
     }  
于 2012-11-24T19:47:23.597 に答える