Я бы хотел с полной проверяемостью ввести идентификатор текущего пользователя, вошедшего в систему, в поле creator_id класса Doctrine_Record без использования синглтона sfContext.Я обнаружил несколько вариантов поведения Doctrine, таких как http://www.symfony -project.org / plugins / sfDoctrineActAsSignablePlugin , но они обращаются к синглтону sfContext в слушателе или (в другом найденном мной примере) в методе сохранения подклассаDoctrine_Record.Я хочу найти единственную точку входа в контроллере Symfony, где я могу ввести текущего вошедшего в систему пользователя и сохранить его до конца запроса.Как мне это сделать?Надеюсь, я был достаточно ясен.
РЕДАКТИРОВАТЬ: Как @jeremy предложил, я сделал пользовательский фильтр:
class userFilter extends sfFilter
{
public function execute($filterChain)
{
$user = $this->getContext()->getUser();
if ($user->isAuthenticated()) {
$guard = $user->getGuardUser();
Doctrine_Manager::getInstance()->setAttribute('logged_in_user', $guard->getId());
}
// Execute next filter
$filterChain->execute();
}
}
Так что теперь мои тесты и мои задачи свободны от sfContext, мне просто нужноустановить правильный идентификатор пользователя в какой-то момент перед началом взаимодействия с БД:
Doctrine_Manager::getInstance()->setAttribute('logged_in_user', sfConfig::get('default_user'));