有没有办法在CakePHP(2。*)中访问mvc外的当前控制器或请求对象?
基本上我需要在为CakePHP设计的库中访问请求对象,但是应该尽可能地自己运行 - 换句话说,我想避免控制器本身中任何不必要的特定于lib的初始化代码保持。
我已为此目的编写了一个组件,但并非所有对lib的调用都将直接来自控制器。我还想避免将$ controller或$ request变量传递给除了lib之外的任何地方。
我从来没有仔细研究CakePHP类的加载,但是当CakePHP 1.3是新的时候,我可以回想起有关ClassRegistry的一些东西。在控制器操作中测试ClassRegistry后不久我发现它是空的(使用ClassRegistry :: keys()和pr()直接从类确定)
那么,有没有友好的方式来获取请求对象,还是应该采用更丑陋的方法?
答案 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);....