Я застрял в определенной проблеме с использованием $ 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 () возвращает правильный результат, а запрос идентификатора для присвоения переменной — нет?
Спасибо за помощь.
Я сам исправил проблему.
Функция была вызвана несколько раз из-за загрузки нескольких контроллеров, выполнения обратных вызовов, использования ячеек или чего-либо еще. Я переместил вызов этой функции forceprofile в AppController :: initialize (). Решил это.
Тем не менее, для меня остается неясным, почему выполнение одного и того же кода double (даже если непреднамеренно) не приводит к тем же переменным для использования.
Других решений пока нет …