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 );
        }

    }

过滤后(缩短)

函数后过滤器(){
    $view_file = file_exists(
                            “/var/www”。
                            $this->webroot 。  
                            “应用程序” 。DS 。  
                            '看法' 。DS 。
                            $this->name 。DS 。
                            '移动的/' 。
                            $这个->动作。
                            '.ctp'
                            );

$layout_file = file_exists(
                            “/var/www”。
                            $this->webroot 。
                            “应用程序” 。DS 。
                            '看法' 。DS 。
                            “布局”。DS 。
                            '移动的/' 。
                            $this->布局。
                            '.ctp'
                            );

如果($view_file || $layout_file){         
 $这个->渲染(
             $this->动作,
             ($layout_file?'mobile/':'').$this->layout,
             ($view_file?'mobile/':'').$this->action
              );
 }
}   
4

2 回答 2

1

在之前的 CakePHP 版本中,$this->render() 有 3 个参数,但在 2.x 及更高版本中,它只有 2 个:

CakePHP 1.3 API for Controller render() - 有 3 个参数:

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

CakePHP 2.0 API for Controller render() - 只有两个参数:

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

因此,您仅使用 2 个参数的答案比使用 3 个参数的尝试效果要好得多。:)

(CakePHP 书仍然错误地指出有 3 个参数,所以 - 我当然不会责怪你尝试过它所提到的 - 必须更详细地查找它才能找到这一点)

于 2013-01-04T18:18:56.957 回答
0

我最终在下面这样做了。我的视图文件夹现在检查移动文件夹并加载视图(如果存在)。

    函数后过滤器(){
        // 如果在移动模式下,检查一个有效的视图并使用它
      if (isset($this->is_mobile) && $this->is_mobile) {

        $has_mobile_view_file = file_exists(ROOT . DS . APP_DIR . DS . '查看' . DS . $this->name . DS . 'mobile' . DS . $this->action . '.ctp' );
        $has_mobile_layout_file = file_exists(ROOT.DS.APP_DIR.DS.'查看'.DS.'布局'.DS.'移动'.DS.$this->layout.'.ctp');

        $view_file = ( $has_mobile_view_file ? 'mobile' . DS : '' ) . $这个->动作;
        $layout_file = ( $has_mobile_layout_file ? 'mobile' . DS : '' ) . $this->布局;

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

  }
     }  
于 2012-11-24T19:47:23.597 回答