我使用的是 symfony 5.4.4 版,我的應用程式的第一頁是登錄頁面,但是當我加載它時,我得到了這個錯誤:
您必須使“App\Entity\mUser”物體 Doctrine Repository ("App\Repository\mUserRepository") 實作 "Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface" 或在相應的物體提供程式中設定 "property" 選項配置。]
是什么導致了這個錯誤?
uj5u.com熱心網友回復:
Symfony 不知道如何從 Doctrine 存盤庫中獲取用戶。
該錯誤非常明確地說明了您需要做什么。
你有兩個選擇:
您可以更改現有的用戶存盤庫 ( App\Repository\mUserRepository),以便它實作Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface
該介面只有一種方法:
public function loadUserByUsername(string $username);
因此,您需要執行以下操作:
class App\Repository\mUserRepository implements UserLoaderInterface
{
public function loadUserByUsername(string $username): ?UserInterface
{
// implement logic to get user from the repository by its username.
}
}
請注意,如果您檢查該介面,該方法loadUserByUsername()實際上已被棄用,并且loadUserByIdentifier()在 Symfony 6 中已被替換。為了使您的實作面向未來,您應該具有以下內容:
class App\Repository\mUserRepository implements UserLoaderInterface
{
public function loadUserByUsername(string $username): ?UserInterface
{
return $this->loadUserByIdentifier($username);
}
public function loadUserByIdentifier(string $identifier): ?UserInterface
{
// implement logic to get user from the repository by its username.
}
}
或者,錯誤訊息告訴您只配置用作用戶識別符號的屬性。
假設您通過電子郵件獲得它們,并且有一個mUser::email屬性。
providers:
mUserProvider:
entity:
class: App\Entity\mUser
property: email
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/425511.html
