2013-02-09 104 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