Я разрабатываю фильтр в Symfony для отслеживания определенного запроса, который пользователи выполняют в приложении.Чтобы получить текущего пользователя, я использую метод getContext()
:
$user = $this->getContext()->getUser();
И затем я пытаюсь получить доступ к его свойствам:
...
$username = $user->getUsername();
...
Проблема в том, что Symfony вызывает следующееисключение: вызов функции-члена getUsername () для необъекта в ... sfGuardSecurityUser.class.php , если я не получу пользователя таким образом:
$user = $this->getContext()->getUser()->getGuardUser();
Согласно Документация sfDoctrineGuardUser (и исходный код) существуют такие методы прокси:
public function getUsername()
{
return $this->getGuardUser()->getUsername();
}
Почему метод прокси не работает?
ОБНОВЛЕНИЕ
После нескольких недель развития проблема снова возникла.На этот раз из представления с использованием переменной $sf_user
.Я могу получить идентификатор с
$sf_user->getGuardUser()->getId()
, но не с
$sf_user->getId()
В моем собственном ответе ниже приводится объяснение.