首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个控制器操作中访问一个控制器操作?

如何在另一个控制器操作中访问一个控制器操作?
EN

Stack Overflow用户
提问于 2014-11-06 06:19:40
回答 4查看 2.2K关注 0票数 0

我使用的是cakephp-2.x。我在user_info()中有一个函数名UsersController.php,我想在另一个控制器名MessagesController.php中访问它

密码-

UsersController.php

代码语言:javascript
复制
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

代码语言:javascript
复制
public function index(){
  //$userInfo=new UsersController();
  //$userInfo->user_info();
  $this->user_info();
  pr($data);
}

错误消息-

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-06 06:24:12

通常,如果您试图从另一个控制器访问一个控制器中的函数,则您的项目逻辑中有一个基本缺陷。

但是,一般来说,对象的用法是:

代码语言:javascript
复制
$otherController = new whateverMyControllerNameIs();
$otherController->functionName();

然而,我对蛋糕还不太熟悉,不能告诉你做这样一件事的缺点。例如,我不知道这会对路由做什么,也不知道正确初始化控制器需要哪些其他变量/对象。

编辑:

参考文献:CakePHP 2.3.8:在CronController.php中调用另一个控制器函数

代码语言:javascript
复制
App::import('Controller', 'Products'); // mention at top
// Instantiation // mention within cron function
$Products = new ProductsController;
// Call a method from
$Products->ControllerFunction();
票数 1
EN

Stack Overflow用户

发布于 2014-11-06 06:43:31

尝试cakephp的requestAction函数

$result =$this->requestAction(数组(‘控制器’=>‘用户’,‘动作’=> 'user_info'));

票数 0
EN

Stack Overflow用户

发布于 2014-11-07 12:18:43

为什么一个简单的,什么时候可以复杂?

用户模型注册用户的所有信息都可以通过以下方式访问:

AppController.php

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?php echo $user_info_view['name']; ?> // email, etc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26772946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档