Как вы устанавливаете культуру пользователя во время процесса signin, который обрабатывается sfDoctrineGuardPlugin? Каждый пользователь может установить предпочтительный язык, который хранится в таблице sfGuardUserProfile.Настройка пользовательской культуры при signin с помощью 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()
никогда не будет работать.
Я не могу поместить свою логику, чтобы установить культуру на странице по умолчанию после входа в систему, поскольку пользователь не всегда перенаправляется на ту же страницу или даже тот же модуль.
Это тоже хорошо. Я привык к тому, чтобы переопределить действие, поскольку я обычно занимаюсь перенаправлениями, сделанными после успешного подписания. –
@MichalTrojanowski это всегда зависит от того, сколько работы вам нужно сделать * вокруг * метод signIn :) – j0k
Спасибо! Это именно то, что я искал. Также в качестве бонуса я не понимал, что могу опустить 'getGuardUser()' и напрямую вызвать getProfile() '. Отлично. – Zach