我在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:对不起我的英文。
答案 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
。