Cakephp3:$this->;Auth->;AppController中的用户(';id';)


Cakephp3: $this->Auth->user('id') in AppController

我在AppController中使用$this->Auth->user('id')时遇到了一些问题。它返回以下错误:错误:在空上调用成员函数user()

现在我想做的是:我想强迫每个人都有一个合适的个人资料。因此,我在AppController中创建了函数forceprofile()。我要求在AppControllers beforefilter函数中执行此函数。所以它每次都会被执行。当没有配置文件时,用户将从forceprofile函数重定向到一个表单中,在那里他可以保存他的配置文件。

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

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

这就是错误发生的地方。

我想看看那里发生了什么,于是我把线路换成了

debug($this->Auth->user('id')); die;

结果是:

int(1)

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

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

有人知道吗,为什么debug()返回正确的结果,而要求将id分配给变量却没有?

谢谢你的帮助。

我现在自己解决了这个问题。

由于加载多个控制器、执行回调、使用Cells或其他操作,该函数被调用了多次。我将对这个forceprofile函数的调用移到了AppController::initialize()。解决了它。

尽管如此,我仍然不清楚为什么执行相同的代码double(即使是无意的)不会带来相同的变量。