2012-06-09 69 views
2

我是cakephp中的新成员,我想在控制器中导入控制器,因此我使用下面的语法。这是我的控制器中,我输入用户控制器:Cakephp导入控制器

users_controller.php中

function api_work(){ $data = $this->User->find('all'); $this->set('data' , $data); } 

plays_controller.php

function api_show() 
     { 
      $this->layout= false; 
      App::import('Controller', 'Users'); 
      $Users = new UsersController; 
      $Users->constructClasses(); 
      $data = $Users->api_work(); 
      pr($data); //it not display anything and shows error like undefined varia 
ble 
     } 

控制器已成功导入。 问题是我怎样才能从api_work()函数返回数据?

回答

6

CakePHP是一个MVC(模型视图控制器)。 users_controller中的api_work函数应该位于用户模型(User.php)中。或者,您可以在plays_controller.php中执行$this->User->find('all');而不是$Users->api_work()

以上建议意味着你将需要删除所有这些行:

App::import('Controller', 'Users'); 
$Users = new UsersController; 
$Users->constructClasses(); 

您还需要确保您添加(只在类声明)在users_controller.php中的顶部以下。

$uses = array([...], 'User'); OR $uses = array('User'); 

我真的建议你阅读本书的CakePHP(http://book.cakephp.org/)。

+0

感谢回复,对我真的很有帮助。但你能告诉我如何使用除了这种方法之外的其他控制器中的一个控制器的方法。 –

+0

唯一的方法是使用requestAction。不过我强烈建议不要使用它。这是一个非常糟糕的做法,尤其是当它可以通过在plays_controller中执行$ this-> User-> findAll()来轻松完成时。然而,如果你坚持:http://book.cakephp.org/1.3/en/view/991/requestAction – iDev247

+0

它对我的帮助感谢那个链接 –