0

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

现在我想做的是:我想强迫每个人都获得正确的个人资料。所以我在 AppController 中创建了函数 forceprofile()。我要求在过滤器功能之前在 AppControllers 中执行此功能。所以每次都会执行。当没有配置文件时,用户将从 forceprofile-function 重定向到一个表单,他可以在其中保存他的配置文件。

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

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

这是发生错误的地方。

比我想看看那里发生了什么,我把这条线换成了

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

结果是:

整数(1)

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

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

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

谢谢您的帮助。

4

1 回答 1

2

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

该函数被多次调用,因为加载了多个控制器、执行回调、使用了 Cells 或其他任何东西。我将调用此 forceprofile 函数移至 AppController::initialize()。解决了。

我仍然不清楚,为什么执行相同的代码双倍(即使是无意的)不会带来相同的变量供使用。

于 2015-10-28T14:49:49.397 回答