这是我的第一篇文章,这个问题有点复杂,请耐心等待。另外,我正在处理一些旧代码,所以请原谅随后的疯狂行为。
首先,请注意项目中除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。
我想念什么?
答案 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');
}