我已经看到很多关于在 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 或图像文件)。
应用控制器
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 的 Themes webroot 文件夹中获取 css 和图像文件
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
。但是, using$this->Html->css('style')
尝试从而app/webroot/css/style.css
不是从app/View/Themed/Default/webroot/css/style.css
. 我还必须将我的主题的主题名称和文件夹名称更改回带有大写 D 的“默认”,以使图像正确链接。样式表仍然没有正确链接。如果我在浏览器中直接导航到我的主题样式表,则会出现一个空白页面。如果我导航到我的主题文件夹中不存在的样式表,那么我会收到正确的错误消息。但是,查看我的主题样式表的来源(确实存在的样式表),会显示一个空白页面。