簡體   English   中英

Symfony 3 - 無法使用session get user

[英]Symfony 3 - Cannot use session get user

我的項目中有一個User實體。 每個頁面加載,我懶得用數據庫中的查詢恢復用戶。

我的目標是在登錄后將其直接放入會話變量中,以便在我想要時將其恢復。

在我的代碼中,如果我測試這個:

$user = $this->checkBDD($mail,$fredurne,$nomComplet);
        dump($user);

        $this->session->set('user',$user);

        $user = $this->session->get('user');
        dump($user);

我有 :

在此輸入圖像描述

所以,會議似乎有效。

現在,我把它付諸實踐。 我創建了一個函數:

$user = $this->getUtilisateur($mail,$fredurne,$nomComplet);
dump($user);

public function getUtilisateur($mail,$fredurne,$nomComplet)
    {
        if(!$this->session->has('user'))
        {
            dump("user not in session");
            $user = $this->checkBDD($mail,$fredurne,$nomComplet);
            $this->session->set('user',$user);
        }

        else
        {
            dump("user in session");
            $user = $this->session->get('user');
        }

        return $user;
    }

我有 :

在此輸入圖像描述

所以,我不明白這是什么問題

問題:
Doctrine實體存儲在會話中,但需要刷新
但是當你從會話中檢索實體時:Doctrine工作單元不知道它必須處理這個實體

之后你應該對Doctrine延遲加載有一些問題。

會話不適合存儲實體。

更好的解決方案是:

  • 在服務中注入Doctrine實體管理器
  • 僅在會話中存儲ID
  • getUtilisateur方法中檢索具有id的用戶(如果尚未完成)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM