【发布时间】:2013-08-13 20:39:13
【问题描述】:
我看到很多关于在 CakePHP 中链接到主题资产的问题,但没有一个能解决我的问题,而且最近的一篇文章是在 2012 年,所以我想我会把我的问题提出来。
我在我的 CakePHP 2.2.4 应用程序中实现了主题。我的主题名为“default”(在 1 分钟前之前称为“Default”)位于 app/View/Themed/default(之前主题名称的文件夹名称也有一个对应的大写 D)。
我的 css 文件位于 app/View/Themed/default/webroot/css/style.css,我使用以下代码调用 app/View/Themed/default/Layouts/default.ctp
Default.ctp 布局
echo $this->Html->css('style');
(我曾尝试将大写 W 用于 webroot “以防万一”,但并不奇怪)
我已经在我的 AppController 中包含了这个链接来确定我正在使用的主题。所有视图文件都指向正确的主题,但现在的问题在于样式表(我还没有处理其他资产,例如 js 或图像文件)。
AppController
class AppController extends Controller {
public $theme = 'default'; // previously 'Default'
// also, have used both 'public $theme' and 'var $theme', no difference
我已阅读以下问题,但没有一个“解决方案”有效。大多数解决方案是检查拼写/大写,检查文件夹的权限,检查我的 .htaccess 文件等。仍然没有。还有新想法?
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
主题webroot和css文件夹的文件夹权限为755。
这里有一些我没有运气使用的资源。
http://book.cakephp.org/2.0/en/views/themes.html
CakePHP theme resources return error
Unable to get css and image files in Themes webroot folder of cakephp
https://groups.google.com/forum/#!topic/cake-php/xaRAugMoNSc
https://groups.google.com/forum/#!topic/cake-php/siYVWchUb1g
更新:使用$this->Html->image('image.jpg') 正确显示位于View/Themed/Default/webroot/img/image.jpg 的定义图像。但是,使用$this->Html->css('style') 会尝试从app/webroot/css/style.css 而非app/View/Themed/Default/webroot/css/style.css 中提取样式表。我还必须将主题的主题名称和文件夹名称更改回带有大写 D 的“默认”,以使图像正确链接。样式表仍然没有正确链接。如果我在浏览器中直接导航到我的主题样式表,则会出现一个空白页面。如果我导航到我的主题文件夹中不存在的样式表,那么我会收到正确的错误消息。但是,查看我的主题样式表的来源(确实存在的那个),会显示一个空白页面。
【问题讨论】:
标签: cakephp themes assets cakephp-2.2