0

我目前正在为我的一个应用程序添加自定义移动布局。

应用控制器.php

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

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

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

有什么建议么?

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

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

-汤姆

4

1 回答 1

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,如果为 true 则显示移动布局,如果为 false 则显示正常布局。如果未设置,则检查$showMobilePref,如果为真,则调用“Mobile or Not?” 元素。并根据用户从元素的答案,你设置

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

大概就是这样,我想。当然,如果您正在验证用户,您应该保存用户的选择并在下次用户登录时记住它。

于 2012-11-16T22:59:24.447 回答