Cakephp Мобильный макет Home redirect. (RequestHandler-> isMobile ()) - PullRequest
0 голосов
/ 01 ноября 2011

Я пытаюсь создать мобильную версию своего сайта, используя 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 Ответ

3 голосов
/ 02 ноября 2011

Вы пытались использовать beforeFilter и afterFilter в вашем AppController?

Я использую это для мобильной версии одного из моих приложений 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, посмотрите этот ответ для получения дополнительной информации. Другой ответ на этот же вопрос касается макетов.

...