在 sfDoctrineGuardPlugin 处理的登录过程中如何设置用户文化?每个用户都可以设置他们的首选语言,该语言存储在 sfGuardUserProfile 表中。
最初我曾考虑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()
永远不会运行。
我无法在登录后将我的逻辑设置在默认页面上,因为用户并不总是被重定向到同一页面甚至同一模块。