访问mvc外部的CakePHP控制器或请求对象

访问mvc外部的CakePHP控制器或请求对象,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,在CakePHP(2.*)中,是否有任何方法可以访问mvc之外的当前控制器或请求对象 基本上,我需要访问为CakePHP设计的库中的request对象,但它应该尽可能独立运行——换句话说,我希望避免控制器本身中任何不必要的特定于库的初始化代码,以保持性能 我已经为此编写了一个组件,但并不是所有对lib的调用都直接来自控制器。我还希望避免在lib之外的任何地方传递$controller或$request变量 我从来没有对CakePHP类加载做过太多的研究,但我可以回忆起CakePHP 1.3刚推出

在CakePHP(2.*)中,是否有任何方法可以访问mvc之外的当前控制器或请求对象

基本上,我需要访问为CakePHP设计的库中的request对象,但它应该尽可能独立运行——换句话说,我希望避免控制器本身中任何不必要的特定于库的初始化代码,以保持性能

我已经为此编写了一个组件,但并不是所有对lib的调用都直接来自控制器。我还希望避免在lib之外的任何地方传递$controller或$request变量

我从来没有对CakePHP类加载做过太多的研究,但我可以回忆起CakePHP 1.3刚推出时关于ClassRegistry的一些事情。在控制器操作中测试ClassRegistry后不久,我发现它是空的(由ClassRegistry::keys()和pr()直接从类中确定)


那么,有没有什么友好的方法来获取请求对象,或者我应该使用更丑陋的方法呢?

下面的代码示例对您有帮助吗

//in Socials Controller importing SocialUsers controller
function __checkSocialUser($title, $user_id){
    App::import('Controller', 'SocialUsers');
        $SocialUsers = new SocialUsersController;
        $SocialUsers->constructClasses();
        $ourUserId = $this->Auth->user('id');
        $SocialUsers->data = array('SocialUser' => array('title' => $title, 'identifier' => $user_id, 'user_id' => $ourUserId));
        $result = $SocialUsers->checkUser($title, $user_id);....

下面的代码示例对您有帮助吗

//in Socials Controller importing SocialUsers controller
function __checkSocialUser($title, $user_id){
    App::import('Controller', 'SocialUsers');
        $SocialUsers = new SocialUsersController;
        $SocialUsers->constructClasses();
        $ourUserId = $this->Auth->user('id');
        $SocialUsers->data = array('SocialUser' => array('title' => $title, 'identifier' => $user_id, 'user_id' => $ourUserId));
        $result = $SocialUsers->checkUser($title, $user_id);....

Router::getRequest()
应该为您提供CakereRequest实例。

Router::getRequest()
应该为您提供CakereRequest实例。

您考虑过供应商吗?我是从CakePHP1.2.x背景说起的?如果您的意思是希望从当前控制器运行或访问另一个控制器,也可以这样做。我的意思是,我想知道CakePHP是否有办法从应用程序中的任何位置获取当前控制器-主要是从与CakePHP的MVC结构无关的库类型类。我已经找到了一种解决这个问题的方法,但我仍然很好奇,所以我将保留这个问题。你考虑过供应商吗?我是从CakePHP1.2.x背景说起的?如果您的意思是希望从当前控制器运行或访问另一个控制器,也可以这样做。我的意思是,我想知道CakePHP是否有办法从应用程序中的任何位置获取当前控制器-主要是从与CakePHP的MVC结构无关的库类型类。我已经找到了一种解决这个问题的方法,但我仍然很好奇,所以我将保留这个问题。对不起,没有。我需要通过客户端/浏览器请求或requestAction()访问当前正在执行的控制器。您可以通过JSON访问控制器的操作。只需将您的操作输出应用JSON,即设置$this->autorender=false,并将echo或printf调整为打印JSON文本格式。对不起,不需要。我需要通过客户端/浏览器请求或requestAction()访问当前正在执行的控制器。您可以通过JSON访问控制器的操作。只需将动作输出应用JSON,即设置$this->autorender=false,并将echo或printf调整为打印JSON文本格式。