如何在sfDoctrineGuardPlugin處理的登錄過程中設置用戶文化?每個用戶可以設置其存儲在sfGuardUserProfile表中的首選語言。使用sfDoctrineGuardPlugin在登錄時設置用戶文化
本來我曾想過做類似這種重寫executeSignin()
功能:
public function executeSignin(sfWebRequest $request)
{
$this->getUser()->setCulture($this->getUser()->getGuardUser()->getProfile()->getLanguage());
parent::executeSignin($request);
}
但很明顯,我不能這樣做,因爲我沒有父功能之前訪問GuardUser對象被執行。
然後我想到了創建一個類似的postExectute()
功能:
public function postExecute()
{
if($this->getUser()->isAuthenticated()){
//SET USER CULTURE
}
}
,但這又不能工作,因爲登入功能做了重定向,以便postExecute()
將永遠不會運行。
我不能把我的邏輯在登錄後在默認頁面上設置文化,因爲用戶並不總是被重定向到同一頁面甚至是同一個模塊。
這也不錯。我習慣於重寫這個動作,因爲我通常會在成功登錄後重新執行重定向操作。 – 2013-02-27 09:51:54
@MichalTrojanowski它總是取決於你需要做多少工作*圍繞* signIn方法:) – j0k 2013-02-27 09:56:37
謝謝!這正是我所期待的。另外作爲獎勵,我沒有意識到我可以省略getGuardUser()並直接調用getProfile()。這很棒。 – Zach 2013-02-27 16:03:59