我使用的是cakephp-2.x。我在user_info()中有一个函数名UsersController.php,我想在另一个控制器名MessagesController.php中访问它
密码-
UsersController.php
public function user_info(){
$user_id=$this->Session->read('Auth.User.id');
$data=$this->User->findById($user_id);
$this->set('user_info',$data);
}MessagesController.php
public function index(){
//$userInfo=new UsersController();
//$userInfo->user_info();
$this->user_info();
pr($data);
}错误消息-
Fatal Error
Error: Call to undefined method MessagesController::user_info()
File: E:\xampp\htdocs\2014\myshowcam\msc\app\Controller\MessagesController.php
Line: 18
Notice: If you want to customize this error message, create app\View\Errors\fatal_error.ctp发布于 2014-11-06 06:24:12
通常,如果您试图从另一个控制器访问一个控制器中的函数,则您的项目逻辑中有一个基本缺陷。
但是,一般来说,对象的用法是:
$otherController = new whateverMyControllerNameIs();
$otherController->functionName();然而,我对蛋糕还不太熟悉,不能告诉你做这样一件事的缺点。例如,我不知道这会对路由做什么,也不知道正确初始化控制器需要哪些其他变量/对象。
编辑:
参考文献:CakePHP 2.3.8:在CronController.php中调用另一个控制器函数
App::import('Controller', 'Products'); // mention at top
// Instantiation // mention within cron function
$Products = new ProductsController;
// Call a method from
$Products->ControllerFunction();发布于 2014-11-06 06:43:31
尝试cakephp的requestAction函数
$result =$this->requestAction(数组(‘控制器’=>‘用户’,‘动作’=> 'user_info'));
发布于 2014-11-07 12:18:43
为什么一个简单的,什么时候可以复杂?
用户模型注册用户的所有信息都可以通过以下方式访问:
AppController.php
public $user_info; /* global scope */
public function beforeFilter(){
$this->user_info = $this->Auth->user(); // for access user data in any controller
$this->set('user_info_view',$this->Auth->user()); // for access user data in any view or layout
}MessagesController.php
public function index(){
debug($this->user_info);
$my_messages = $this->Message->find('all',
array('conditions' => array('Message.user_id' => $this->user_info['id']))
}
....布局或view.ctp
<?php echo $user_info_view['name']; ?> // email, etchttps://stackoverflow.com/questions/26772946
复制相似问题