未加载CakePHP iPad布局
好吧,这让我有点发疯 我创建了一个移动布局,主要用于iPad。我正在使用AppController中的beforeRender()函数来检测移动客户端,并相应地切换主题 当我使用iOS模拟器在本地开发服务器上测试移动站点时,一切都很好。主题被正确地加载,并且全部被加载。但是,当我在在线制作服务器上访问它时,移动主题不会被加载。我看到了内容,但没有任何样式 在线测试可在此处找到: 为什么会这样?非常感谢您的任何意见 更新: 以下是相关代码段: 在我的AppController.php中 /lib/cake/Network/CakeRequest.php 移动样式表位于: /app/View/Themed/mobile/webroot/css/mobile.css 并在布局文件中调用splash page/app/View/Themed/mobile/Layouts/splash.ctp,如下所示: 修复(好的) 我做了几步,最终似乎解决了问题。问题似乎是,在在线生产服务器上,它会尝试从常规webroot文件夹(而不是我的主题文件夹)提供样式表。我不知道为什么,但你说对了 因此,首先,我复制了所有移动样式表,并将它们放在/app/webroot/css/(vs他们应该去的地方/app/View/Themed/mobile/webroot/css/)中。然后我还重命名了在移动和非移动视图中使用的任何元素,以确保移动元素(位于/app/View/Themed/mobile/Elements中)都有唯一的名称未加载CakePHP iPad布局,ipad,cakephp,ios-simulator,cakephp-2.0,Ipad,Cakephp,Ios Simulator,Cakephp 2.0,好吧,这让我有点发疯 我创建了一个移动布局,主要用于iPad。我正在使用AppController中的beforeRender()函数来检测移动客户端,并相应地切换主题 当我使用iOS模拟器在本地开发服务器上测试移动站点时,一切都很好。主题被正确地加载,并且全部被加载。但是,当我在在线制作服务器上访问它时,移动主题不会被加载。我看到了内容,但没有任何样式 在线测试可在此处找到: 为什么会这样?非常感谢您的任何意见 更新: 以下是相关代码段: 在我的AppController.php中 /lib/
这似乎奏效了,但总而言之,这是一个相当简洁的解决方案。因此,如果有人有更好的解决方案,我很乐意听到。您根本没有收到css?正确-生产测试服务器上的移动主题没有css。常规主题(非移动)工作正常。网络服务器有权阅读移动CSS文件吗?你能发布你的主题转换代码吗?@HeatherWalters:我已经更新了原始问题,加入了相关代码。
public function beforeRender() {
if($this->RequestHandler->isMobile()) {
$this->theme = 'mobile';
}
}
protected $_detectors = array(
'get' => array('env' => 'REQUEST_METHOD', 'value' => 'GET'),
'post' => array('env' => 'REQUEST_METHOD', 'value' => 'POST'),
'put' => array('env' => 'REQUEST_METHOD', 'value' => 'PUT'),
'delete' => array('env' => 'REQUEST_METHOD', 'value' => 'DELETE'),
'head' => array('env' => 'REQUEST_METHOD', 'value' => 'HEAD'),
'options' => array('env' => 'REQUEST_METHOD', 'value' => 'OPTIONS'),
'ssl' => array('env' => 'HTTPS', 'value' => 1),
'ajax' => array('env' => 'HTTP_X_REQUESTED_WITH', 'value' => 'XMLHttpRequest'),
'flash' => array('env' => 'HTTP_USER_AGENT', 'pattern' => '/^(Shockwave|Adobe) Flash/'),
'mobile' => array('env' => 'HTTP_USER_AGENT', 'options' => array(
'AvantGo','DoCoMo', 'Fennec', 'iPad', 'J2ME', 'MIDP', 'NetFront', 'Nokia', 'Opera Mini', 'Opera Mobi', 'PalmOS', 'PalmSource',
'portalmmm', 'Plucker', 'ReqwirelessWeb', 'SonyEricsson', 'Symbian', 'UP\\.Browser',
'webOS', 'Windows CE', 'Windows Phone OS', 'Xiino'
)),
'requested' => array('param' => 'requested', 'value' => 1)
);
<?php echo $this->Html->css(array('reset.defaults', 'mobile', 'superfish')); ?>
'Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'