Cakephp主题和图像

时间:2013-04-15 05:54:06

标签: php image cakephp themes cakephp-2.0

我在CakePHP中遇到了一个奇怪的问题。

我使用主题所以我有一个文件夹Themed / mytheme,在这种情况下我有Themed/mytheme/webroot/img/

我担心的是,在这个文件图片中我有几张图片。到目前为止,我的所有图片都显示在网址/theme/mytheme/img/myimage.png中。

今天早上我创建了另一张图片,所以我保存在这个文件夹img并且有问题。当我想显示我的图像时,我收到以下错误:

missing Controller
Error: ThemeController could not be found.

Error: Create the class below in ThemeController file: app \ Controller \ ThemeController.php

<? php
ThemeController class extends AppController {

}
Notice: If you want to customize this error message, create app \ View \ Errors \ missing_controller.ctp

Stack Trace
APP \ webroot \ index.php line 92 → Dispatcher-> dispatch (CakeRequest, CakeResponse)

我的错误与其他图片不在同一个文件夹中。

你能告诉我还是可以来的?

谢谢。

P.S:对不起我的英文。

1 个答案:

答案 0 :(得分:1)

网址中有拼写错误

Cake的默认mod重写规则是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^ index.php [L]
</IfModule>

这意味着如果网址匹配目录并且匹配文件 - 请将请求发送到CakePHP。由于您的请求由CakePHP处理 - 您请求的路径与您创建的文件不同。

不要硬编码主题路径

要得到这样的错误,很可能在视图文件中有这样的代码:

echo $this->Html->image('/theme/ThemeName/img/foo.png');

这不是必要的,这样做会导致问题 - 例如错误的路径,以及请求不存在的文件。而只是使用:

echo $this->Html->image('foo.png');

如果当前请求是针对主题的,那么Cake会自动使用/theme/ThemeName/img/foo.png(如果存在),如果不存在,则/img/foo.png