Php $Dispatcher=new Dispatcher();//找不到ImagesController控制器类

Php $Dispatcher=new Dispatcher();//找不到ImagesController控制器类,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,大家早上好。 在错误日志中,CakePHP指控如下: 28/11/2011 10:13:27 Error: [MissingControllerException] ImagesController Controller class could not be found. # 0 /........./app/webroot/index.php (96): Dispatcher-> dispatch (Object (CakeRequest), Object (CakeResponse))

大家早上好。
在错误日志中,CakePHP指控如下:

28/11/2011 10:13:27 Error: [MissingControllerException] ImagesController Controller class could not be found.
# 0 /........./app/webroot/index.php (96): Dispatcher-> dispatch (Object (CakeRequest), Object (CakeResponse))
# 1 {main}
我不知道它是什么,因为我没有图像控制器,但是有图像组件

代码片段:

// app/Controller/BrandsController.php    
class BrandsController extends AppController {
public $components = array('Image');
...

public function add() {
    if ($this->request->is('post')) {
        if (!empty($this->request->data)) {

            if(!$this->request->data['Image']['name1']['error']) {
                $this->Brand->create();

                $image_path = $this->Image->uploadImage(
                    $this->request->data['Image'], 
                    'Brands',
                    array(
                        'folder'=>'upload/imagens/marcas',
                        'resize'=>175,
                        'thumb'=>0,
                        'original'=>false,
                        'name'=>$this->request->data['Brand']['brand']
                    )
                ); 

// app/Controller/Component/ImageComponent.php
class ImageComponent extends Component {

public $components = array('String');

function uploadImage($images, $controller, $data) {
    $erroimg = false;
    $isfile = false;
    ...
此错误的原因是什么?

对不起,我说的是英语

您的错误日志显示了导致错误的方法的堆栈跟踪。在你的情况下,有人打电话给你。此方法的文档如下所示:

分派并调用给定的请求,将控制权移交给相关的控制器。如果控制器通过
控制器::$autoRender
设置为autoRender,则Dispatcher将呈现视图。CakePHP中的操作可以是控制器上未在控制器中声明的任何公共方法。如果您希望控制器方法是公共的,并且URL无法访问,那么请在它们前面加一个
\uu
。例如,
公共函数
\u loadPosts(){}`将无法通过URL访问。私有和受保护的方法也不能通过URL访问

如果找不到具有给定名称的控制器,
invoke()
将引发异常。
如果找到控制器,但未找到操作,则将引发异常

在内部,dispatch将调用解析请求以确定要调用的控制器。如果已配置任何路由,
parseParams
将应用它们

将路由和其他参数应用于要调度的请求。 如果尚未加载路由,则将加载路由,并运行app/Config/Routes.php


换句话说:您请求了一个分派器希望传递给映像控制器的URL。您没有ImageController,因此会出现错误。因此,添加一个ImageController或更改CakePHP的路由方式。

是的,但是,请参见:这是一个URL:。在我的app/Config/routes.php中,只有一个默认路由。所以,我不明白。我发现了一个解决方案:我在本地服务器中使用虚拟主机,当我尝试上传大文件(最大2mb)时,CakePHP返回错误。现在我在php_value upload_max_filesize 30M和其他值中添加了e是否正常工作。@Patrick另一个选项是安装调试器并逐步完成代码以查看发生了什么。这将导致出现错误。在我看来,CSS或HTML输出(即
)中的某个位置有一个断开的图像路径。CakePHP的默认重写规则(在
webroot/.htaccess
中)将尝试发送请求(通过
webroot/index.php
),如果它们不作为静态文件存在于
webroot/
目录下的文件系统中。Cake抛出了一个错误,而不是404,因为您处于调试模式。@deizel我不知道,但我认为问题只存在于虚拟主机。无论如何,我将返回原始版本的001默认文件并进行一些测试。不确定是否相关-从文档:
当您没有[Plugin]AppController和[Plugin]AppModel时,在尝试访问插件控制器时会出现缺少控制器的错误。