Cakephp 2.x移动主题和前缀

时间:2012-11-16 22:39:00

标签: jquery-mobile cakephp-2.1 prefix

我目前正在为我的某个应用添加自定义移动版面。

AppController.php

if ($this->request->is('mobile')) {
   //$this->viewClass = 'Theme';
   $this->theme = 'Mobile';
} else {
   $this->theme = Configure::read('App.theme'); 
}

工作得很好..让jquery mobile现在运行完美无缺。 但是,我想在控制器中开发单独的功能,因为主网站确实从数据库中收集的数据远远多于移动版本所需的数据。

所以我想的是一种方法,如果请求mobile =>设置这个前缀=移动或类似的东西?允许在控制器中使用单独的移动功能。

有什么建议吗?

另外,我想在页面加载时设置一个参数,比如,你想查看移动版本吗?是/否。如果否=> show mobile = false,if yes => show mobile = true。最好通过某种弹出窗口(如tapatalk论坛应用程序通知)。

感谢您对此有任何帮助.. :)

- 汤姆

1 个答案:

答案 0 :(得分:0)

就像你在 AppController 中使用 $ this-> request-> is('mobile')一样,你可以在所有的方法中使用相同的方法控制器并根据请求类型执行逻辑,这是实现目标的好方法。

其次;

您可以创建一个要求用户“移动与否?”的元素。

在您的着陆页控制器中(或者如果您想在每个页面中进行此检查,例如,如果用户登陆到具有来自其他站点的链接的特定页面。那么在 AppController beforeFilter())检查如下值:

$mobilePref = Configure::read('Config.mobilePreference');
if($mobilePref){
     $this->set('showMobileElement', true);
} else {
     if($mobilePref == 'Mobile'){
          $this->set('showMobileLayout', true);
     } else {
          $this->set('showMobileLayout', false);
     }
}

在您的布局中,您只需检查 $ showMobileLayout ,如果是,则显示移动布局,如果为false则显示正常布局。 如果未设置,请检查 $ showMobilePref ,如果为true,则调用“Mobile or Not?”元件。根据元素的用户答案,你设置

 Configure::write('Config.mobilePreference', true); //or false, depending on answer

我认为这大致是这样。当然,如果您要对用户进行身份验证,则应保存用户选择并在用户下次登录时记住该用户。