2011-11-28 34 views
2

早上好夥計。
是error_logCakePHP的指責如下:

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

什麼是這個錯誤的原因是什麼?
對不起,我的英語

+0

不確定是否相關 - 從文檔:'當您沒有[Plugin] AppController和[Plugin] AppModel時,您將在嘗試訪問插件控制器時丟失控制器錯誤。「 – Ross

回答

1

錯誤日誌顯示了導致錯誤的方法的堆棧跟蹤。在你的情況下,Dispatcher::dispatch被調用。此方法的文檔如下:

調度並調用給定的請求,將控制移交給涉及的控制器。如果控制器通過Controller::$autoRender設置爲autoRender,則分派器將呈現該視圖。 CakePHP中的操作可以是控制器上的任何公共方法,但不在Controller中聲明。如果您希望控制器方法是公開的並且無法通過URL訪問,請在_前加前綴。例如public function _loadPosts(){}`不能通過URL訪問。私有和受保護的方法也不能通過URL訪問。

如果找不到給定名稱的控制器,則invoke()會拋出異常。
如果找到控制器,並且未找到操作,則將引發異常。

在內部,調度將調用Dispatcher::parseParams來解析請求以確定要調用的控制器。如果已配置任何路由,則parseParams將應用它們

將路由和additionalParameters應用於要分派的請求。 如果路由尚未加載,它們將被加載,並運行app/Config/routes.php。

換句話說:您請求了分派器想要傳遞給Image控制器的URL。你沒有ImageController,這就是你得到錯誤的原因。因此,添加一個ImageController或更改CakePHP的路線。

+0

是的,但,請參閱:http://example.//brands/add。在我的應用/ Config/routes.php中只有一個默認路由。所以,我不明白。無處我呼叫圖像控制器。 –

+0

我找到了一個解決方案:我在本地服務器中使用虛擬主機,當我嘗試上傳大文件(最多2mb)時,CakePHP返回錯誤。現在我添加了 php_value upload_max_filesize 30M和其他值,e正常工作。 –

+1

@Patrick另一個選擇是安裝一個調試器,並通過代碼來查看發生了什麼。這會導致你的錯誤。 – Gordon

相關問題