2012-06-09 45 views
1

我正在使用Symfony 2和FOSUserBundle編寫應用程序。我希望允許多個用戶使用相同的名稱註冊並使用電子郵件來識別它們。我編輯了用戶管理器,將loadUserByUsername轉換爲findUserByEmail()的封裝器。這破壞了TokenBasedRememberMeServices,它使用getUsername()來生成記住我的令牌。我怎樣才能用我自己的方式來替換這個類,以免在每次更新FW框架版本時都強迫自己陷入黑客symfony文件?如何覆蓋組件包中的類?

回答

5

我找到了一種方法:

的Symfony在其配置文件PARAMS包店的類名。您可以通過在config.yml中添加以下行來簡單地覆蓋這些參數:

# Parameters override 
parameters: 
    security.authentication.rememberme.services.simplehash.class: MyVendor\UserBundle\RememberMe\TokenBasedRememberMeServices 
+1

此用法從3.0開始已被棄用和刪除。你不能再這樣做,並已被認爲是一種不好的做法。如果你想「替換」服務,改變它們的定義或裝飾它們。 –