2013-02-09 108 views
0

我使用的是蛋糕2.2。我想修改一個UserMgmt插件,以使用父應用中的幾個模型和控制器。cakephp:從插件訪問控制器

我在需要訪問'Hotels'控制器和'GetHotels'動作的插件中有一個視圖。我的插件觀點有:

$this->Js->get('#UserRegionId')->event('change', 
    $this->Js->request(array(
    'controller'=>'Hotels', 
'action'=>'GetHotels' 
), array(
'update'=>'#UserCategoryId', 
'async' => true, 
'method' => 'post', 
'dataExpression'=>true, 
'data'=> $this->Js->serializeForm(array(
      'isForm' => true, 
      'inline' => true)) 
    ) 
) 
); 

我懷疑我需要添加應用程序::在UserMgmt.UsersController

App::uses('Hotel','Model'); 
    App::uses('Hotels','Controller'); 

類定義之前使用,但我也不能正常工作。

我得到了錯誤錯誤:

Error: [MissingControllerException] Controller class HotelsController could not be found. 

回答

0

您的視圖代碼不是內部訪問控制器。 $this->Js->request()通過ajax調用一個url。所以你不需要App::uses()

將控制器/操作設置爲小寫。網址通常總是小寫(或者至少它們應該是出於理智的緣故!)。

'controller'=>'hotels', 
'action'=>'get_hotels' 

爲了測試,如果這些都有效,直接訪問自己的路徑:

http://yourdomain.com/hotels/get_hotels 
+0

點約小寫重視。一切都變了。我可以直接訪問這個url,但是當它被插件調用時我仍然會收到錯誤信息。該代碼在不在插件中的視圖中正常工作。 – mpe 2013-02-10 11:26:21

+0

奇怪。嘗試使用url的字符串,只是爲了看看你是否得到錯誤。 '$ this-> Js-> request('/ hotels/gethotels',array(...'。另外,檢查堆棧跟蹤的錯誤以找出它來自哪裏,我假設從'Router'類。 – Costa 2013-02-11 01:32:59