如何在Model中获取AppController beforeFilter数据?

时间:2015-12-15 07:48:16

标签: php cakephp

您好我在过滤前编写了代码。我想在Project.php模型中获取用户详细信息。所以我不想再写代码了。已经在AppController beforeFilter功能中提取了用户详细信息。请参阅我的代码 -

AppController.php

public function beforeFilter(){
    parent::beforeFilter();
    $userId = $this->Session->read('Auth.User.id');
    $getUserDetail = $this->User->findById($userId);
    $this->set('getUserDetail', $getUserDetail);
}

Project.php

public function sameData($data=null){
    //Here i want to get the the usedetails data. which set in appcontroller
}

我正在使用cakephp 2.2.3版

1 个答案:

答案 0 :(得分:0)

只需将用户数据传递给模型:

$result = $this->{$this->modelClass}->yourMethod($this->Auth->user('id'));
$this->set('result', $result);

请勿使用会话对象,请使用Auth组件访问用户数据。如果操作正确,那么您的所有用户数据都应该可用。无需每次都获取用户数据。 Read this chapter

从不在某处实例化控制器,它可能是几乎所有MVC框架中破坏的架构的保证。这样做有一些影响,最重要的是它将模型层与控制器耦合。这也将成为单元测试的噩梦。