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

时间:2012-07-31 19:58:52

标签: cakephp cakephp-2.0

有没有办法在CakePHP(2。*)中访问mvc外的当前控制器或请求对象?

基本上我需要在为CakePHP设计的库中访问请求对象,但是应该尽可能地自己运行 - 换句话说,我想避免控制器本身中任何不必要的特定于lib的初始化代码保持。

我已为此目的编写了一个组件,但并非所有对lib的调用都将直接来自控制器。我还想避免将$ controller或$ request变量传递给除了lib之外的任何地方。

我从来没有仔细研究CakePHP类的加载,但是当CakePHP 1.3是新的时候,我可以回想起有关ClassRegistry的一些东西。在控制器操作中测试ClassRegistry后不久我发现它是空的(使用ClassRegistry :: keys()和pr()直接从类确定)

那么,有没有友好的方式来获取请求对象,还是应该采用更丑陋的方法?

2 个答案:

答案 0 :(得分:5)

Router::getRequest()应该为你提供CakeRequest实例。

答案 1 :(得分:0)

以下代码示例可以帮助您吗?

//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);....