私は2つの異なるコンテキストで閲覧できるsymfonyWebサイトを持っています。私はアプリケーションではなくコンテキストを意味します(私はysfDimensionsPluginを使用します)。最初のコンテキストでは、データベースdb1にバインドされたsfGuardを使用してユーザーを認証します。2番目のコンテキストでは、sfGuardを使用してユーザーを認証しますが、データベースdb2にバインドします。
これらの2つの接続は、databases.ymlで標準のsfDoctrineDatabaseオブジェクトとして定義されています。schema.ymlで、sfGuardコンポーネントをdb1接続にバインドします。したがって、私のsfGuard基本クラスには、次のものがあります。
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
私がやろうとしているのは、2番目のコンテキストにいる場合、sfGuardコンポーネントをdb2接続に動的にバインドすることです。したがって、グローバルpreExecuteメソッドでは、次のようにします。
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db2');
Doctrine_Manager::getInstance()->bindComponent('sfGuardGroup', 'db2');
バインディングは作成されますが、クエリが実行されるとすぐに上書きされます。sfAutoloadは、基本クラスを含むsfGuardクラスをロードし、次のように呼び出します。
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
だから私は尋ねています:それを解決するためにそれをどのように実装しますか?