Cakephp移动布局主页重定向。 (RequestHandler-> isMobile())

时间:2011-11-01 14:53:52

标签: php jquery cakephp jquery-mobile

我试图建立我的网站的移动版本,使用Cakephp和JQueyrMobile。 对于Cakephp部分,我选择在app_controller中使用以下内容:

    if($this->RequestHandler->isMobile() || isset($this->params['url']['mobile'])) {
       $this->layout = 'mobile';
       $this->isMobile = true;
    }
    $this->set('is_mobile', $this->isMobile);

    if($this->isMobile) {
           $this->action = 'mobile/'.$this->action;
     }

谢谢我为每个控制器/视图创建/ mobile /文件夹,它工作正常。 我刚回到home.ctp有问题!我在/views/pages/mobile/home.ctp中创建了备用移动版本,但它加载了/views/pages/home.ctp。

如何重定向到home.ctp的移动版本,我应该怎么做才能使用上面的代码? 谢谢!

1 个答案:

答案 0 :(得分:3)

您是否尝试在AppController中使用beforeFilterafterFilter

我将它用于我的一个Cake应用程序的移动版本:

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

afterFilter:

  function afterFilter() {
    if (isset($this->is_mobile) && $this->is_mobile) {
      $view_file = file_exists( VIEWS . $this->name . DS . 'mobile/' . $this->action . '.ctp' );
      $layout_file = file_exists( LAYOUTS . 'mobile/' . $this->layout . '.ctp' );
      $this->render($this->action, ($layout_file?'mobile/':'').$this->layout, ($view_file?'mobile/':'').$this->action);
    }
  }

此代码来自Cake中有关移动内容的另一个问题,请查看this answer以获取更多信息。关于同一问题的Another answer涉及布局。