$ Dispatcher = new Dispatcher(); //无法找到ImagesController控制器类

时间:2011-11-28 12:26:47

标签: php cakephp cakephp-2.0

早上好。伙计 在 error_log 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}

我不知道它是什么,因为我没有 ImagesController 但是 ImagesComponent

代码段:

// 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;
    ...

此错误的原因是什么?
对不起我的英文

1 个答案:

答案 0 :(得分:1)

您的错误日志显示了包含导致错误的方法的堆栈跟踪。在您的情况下Dispatcher::dispatch被调用。该方法的文档为:

  

调度并调用给定的请求,将控制权交给相关的控制器。如果控制器通过Controller::$autoRender设置为autoRender,则Dispatcher将呈现视图。 CakePHP中的操作可以是控制器上的任何公共方法,不在Controller中声明。如果您希望控制器方法是公共的并且URL不可访问,则在前面添加_。例如,public function _ loadPosts(){}`无法通过URL访问。私有和受保护的方法也无法通过URL访问。

     

如果找不到给定名称的控制器,invoke()将抛出异常   如果找到控制器,并且未找到操作,则将抛出异常。

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

  

将Routing和additionalParameters应用于要分派的请求。   如果尚未加载路由,则将加载它们,并运行app / Config / routes.php。

换句话说:您请求Dispatcher想要传递给Image控制器的URL。你没有ImageController,这就是你得到错误的原因。因此,添加一个ImageController或更改CakePHP路由的方式。