Cakephp3: $ this- & gt; Auth- & gt; user (‘id’) в AppController

Я застрял в определенной проблеме с использованием $ this-> Auth-> user (‘id’) в AppController. Возвращает следующую ошибку:
Ошибка: вызов функции-члена user () с нулевым значением

Теперь, что я хочу сделать:
Я хочу заставить всех получить правильный профиль. Поэтому я создал функцию forceprofile () в AppController. Я прошу, чтобы эта функция выполнялась в AppControllers beforefilter-function. Так будет выполняться каждый раз. Если профиль отсутствует, пользователь будет перенаправлен из функции forceprofile в форму, где он сможет сохранить свой профиль.

В самой первой строке кода этой функции forceprofile непосредственно после некоторых комментариев я передаю UserID в переменную:

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

Это где ошибка происходит.

Чем я хотел проверить, что там произошло, я заменил строку на

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

Результат был:

INT (1)

Так что на самом деле я получаю очень правильный результат там.

Стек исходной ошибки не предоставил никакой полезной информации, он просто печатает [внутреннюю функцию] без какого-либо контекста или кода … И он печатает BaseErrorHandler.

У кого-нибудь есть идеи, почему debug () возвращает правильный результат, а запрос идентификатора для присвоения переменной — нет?

Спасибо за помощь.

0

Решение

Я сам исправил проблему.

Функция была вызвана несколько раз из-за загрузки нескольких контроллеров, выполнения обратных вызовов, использования ячеек или чего-либо еще. Я переместил вызов этой функции forceprofile в AppController :: initialize (). Решил это.

Тем не менее, для меня остается неясным, почему выполнение одного и того же кода double (даже если непреднамеренно) не приводит к тем же переменным для использования.

2

Другие решения

Других решений пока нет …