我试图建立我的网站的移动版本,使用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的移动版本,我应该怎么做才能使用上面的代码? 谢谢!
答案 0 :(得分:3)
您是否尝试在AppController中使用beforeFilter
和afterFilter
?
我将它用于我的一个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涉及布局。