ユーザーがアプリケーション内で実行する特定の要求を追跡するために、Symfony でフィルターを開発しています。現在のユーザーを取得するには、次のgetContext()
メソッドを使用します。
$user = $this->getContext()->getUser();
そして、そのプロパティにアクセスしようとします:
...
$username = $user->getUsername();
...
問題は、Symfony が次の例外を発生させることです: Call to a member function getUsername() on a non-object in ... sfGuardSecurityUser.class.php、この方法でユーザーを取得しない限り:
$user = $this->getContext()->getUser()->getGuardUser();
sfDoctrineGuardUser のドキュメント(およびソース コード) によると、次のようなプロキシ メソッドがあります。
public function getUsername()
{
return $this->getGuardUser()->getUsername();
}
プロキシ メソッドが機能しないのはなぜですか?
アップデート
数週間の開発の後、問題が再び発生しました。今回は$sf_user
変数を使ったビューから。でIDを取得できます
$sf_user->getGuardUser()->getId()
しかし、一緒ではありません
$sf_user->getId()
以下の私自身の答えは説明です。