1

私は CakePHP で奇妙な問題を抱えています。

私はテーマを使用しているので、フォルダー Themed/mytheme があり、この場合はThemed/mytheme/webroot/img/

そして、私の懸念は、このファイル写真にはいくつかの画像があることです。今まで私の画像はすべて url に表示されていました/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)

残りの画像が同じフォルダーにあるのにエラーはありません。

教えていただけますか、それとも由来でしょうか?

ありがとうございました。

PS: 私の英語で申し訳ありません。

4

1 に答える 1

1

URLに誤りがあります

Cake のデフォルトの mod 書き換えルールは次のとおりです。

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

これは、URL がディレクトリにもファイルにも一致しない場合、リクエストを 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ない場合は自動的に使用します。

于 2013-04-15T21:49:13.223 に答える