CakePHP3:$ this-> AppController

时间:2015-10-28 14:25:37

标签: php cakephp cakephp-3.1

我在AppController中使用$ this-> Auth-> user('id')遇到了一个问题。它返回以下错误: 错误:在null

上调用成员函数user()

现在我想做什么: 我想强迫所有人获得正确的个人资料。所以我在AppController中创建了函数forceprofile()。我要求此函数在AppControllers beforeFilter-function中执行。所以每次都会执行。如果没有配置文件,用户将从forceprofile-function重定向到一个表单,在那里他可以保存他的个人资料。

在这个forceprofile函数的第一个代码行中,在一些注释之后,我将UserID变为一个变量:

$userid = $this->Auth->user('id');

这是错误发生的地方。

我想看看那里发生了什么,我用

替换了这一行
debug($this->Auth->user('id')); die;

结果是:

  

INT(1)

所以实际上我在那里得到了一个非常正确的结果。

原始故障的堆栈没有提供任何有用的信息,它只打印[内部函数]而没有任何上下文或代码......并且它打印出BaseErrorHandler。

任何人都知道,为什么debug()会返回一个正确的结果并要求将id分配给变量?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我现在自己修复了问题。

该函数被多次调用,因为加载多个控制器,进行回调,使用Cells或其他。我将调用此forceprofile函数调用到AppController :: initialize()。解决了它。

对我来说仍然不清楚,为什么执行相同的代码加倍(即使无意中)不会带来相同的变量用于使用。