У меня есть веб-сайт Symfony, который можно просматривать в двух разных контекстах. Я имею в виду контексты, а не приложения (я использую ysfDimensionsPlugin). В первом контексте я аутентифицирую пользователей с помощью sfGuard, привязанного к базе данных db1; во втором контексте я аутентифицирую пользователей с помощью sfGuard, но привязан к базе данных db2.
Эти два соединения определены в файле databases.yml как стандартные объекты sfDoctrineDatabase. В schema.yml я привязываю компоненты sfGuard к соединению db1. Итак, в моих базовых классах sfGuard у меня есть это:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
Что я пытаюсь сделать, так это динамически привязать компоненты sfGuard к соединению db2, если я нахожусь во втором контексте. Итак, в глобальном методе preExecute я делаю следующее:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db2');
Doctrine_Manager::getInstance()->bindComponent('sfGuardGroup', 'db2');
Привязка выполняется, но сразу перезаписывается при выполнении запроса: sfAutoload загружает классы sfGuard, включая базовые классы, вызывая это:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
Поэтому я спрашиваю: как бы вы это реализовали, чтобы это решить?