2015-10-28 16 views
0

我在AppController中遇到了使用$ this-> Auth-> user('id')的問題。它返回以下錯誤: 錯誤:調用成員函數用戶()null

現在我想要做的: 我想強制每個人都得到一個適當的配置文件。所以我在AppController中創建了函數forceprofile()。我要求這個函數在過濾函數之前在AppControllers中執行。所以它會每次都執行。當沒有配置文件時,用戶將被從forceprofile-function重定向到一個表單,在那裏他可以保存他的配置文件。

在這種forceprofile功能的非常第一代碼行,直接一些意見後,我走用戶ID到一個變量:

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

這是錯誤發生。

比我想看看那裏發生了什麼,我更換了一行

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

結果是:

int(1)

所以實際上我得到一個非常正確的結果出現。

原始故障的堆棧沒有提供任何有用的信息,它只是在沒有任何上下文或代碼的情況下打印[內部函數] ...並打印BaseErrorHandler。

任何人的任何想法,爲什麼debug()返回一個正確的結果,並要求將id分配給一個變量不?

謝謝你的幫助。

+0

我繼續調試。無論出於何種原因,看起來,函數forceprofile被多次調用。所以它在第二次執行時失敗。我想我需要幫助弄清楚,爲什麼和從哪裏叫它2x。 –

回答

2

我現在自己解決了這個問題。

該函數被調用多次,因爲加載多個控制器,做回調,使用單元格或其他。我把這個forceprofile函數調用到AppController :: initialize()。解決了它。

對於我來說,仍然不清楚爲什麼執行相同的代碼雙倍(即使無意)不會帶來相同的使用變量。