CakePHP 2.8.8-$ this-> Auth在AppController中为空

时间:2018-08-17 01:12:50

标签: controller cakephp-2.0

这是我的第一篇文章,这个问题有点复杂,请耐心等待。另外,我正在处理一些旧代码,所以请原谅随后的疯狂行为。

首先,请注意项目中除AppController之外的每个控制器都具有以下调用:

App::uses('AppController', 'Controller');

我有一个LeadController,它使用LeadDispositionsController中的函数。在LeadController中,我有:

App::uses('LeadDispositionsController', 'Controller');

在顶部,我实例化LeadDispositionsController并像这样调用函数:

$LeadDispositionsController = new LeadDispositionsController();
if(!$LeadDispositionsController->set_milestones($this->Lead->id)) {
    throw new InternalErrorException('Could not create milestones');
}

这通常有效; set_milestones()可以正确执行 except 来解决一个问题。同一控制器中的私有函数像这样在AppController中调用受保护的函数:

$this->sendAlerts(4, $this->LeadsMilestone->id);

但是AppController在sendAlerts函数内的以下行上引发“在null上调用成员函数user()的错误”错误:

$account_id = $this->Auth->user('account_id');

我们到处都使用sendAlerts函数和$ this-> Auth-> user,这是我第一次遇到此错误。现在,通常,我们不会从已由另一个控制器实例化的控制器中的私有函数中调用sendAlert,但是我不明白为什么在这种情况下仍不能定义$ this-> Auth。

我想念什么?

1 个答案:

答案 0 :(得分:0)

我知道了。实例缺少一行。应该是:

$LeadDispositionsController = new LeadDispositionsController();
$LeadDispositionsController->constructClasses(); // This line was missing
if(!$LeadDispositionsController->set_milestones($this->Lead->id)) {
    throw new InternalErrorException('Could not create milestones');
}