私は2つの異なるコンテキストでブラウズできるsymfonyのWebサイトを持っています。私はアプリケーションではなくコンテキストを意味します(私はysfDimensionsPluginを使用します)。最初のコンテキストでは、データベースdb1にバインドされたsfGuardを使用してユーザーを認証します。 2番目のコンテキストでは、sfGuardを使用してユーザーを認証しますが、データベースdb2にバインドします。コンポーネントを接続に動的にバインドします
これらの2つの接続は、databases.ymlで標準のsfDoctrineDatabaseオブジェクトとして定義されています。 schema.ymlでは、sfGuardコンポーネントをdb1接続にバインドします。だから私のsfGuard基底クラスで、私はこれを持っている:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
私は何をしようとすると、私は2番目のコンテキストにいる場合は、動的にDB2接続にsfGuardコンポーネントをバインドすることです。だから、グローバルpreExecute方法では、私がこれを行う:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db2');
Doctrine_Manager::getInstance()->bindComponent('sfGuardGroup', 'db2');
結合が行われますが、クエリが行われたとき、それはすぐに上書きされます。sfAutoloadはこれを呼び出して、基本クラスを含むsfGuardクラスをロード:
Doctrine_Manager::getInstance()->bindComponent('sfGuardUser', 'db1');
私はこう質問しています。それをどのように実装するのですか?
を使用して動的にapp.ymlの値を変更することができますが、私はあなたが何を意味するか理解していません。あなたはもっと明白かもしれませんか? – Gregoire
@Gregoire遅く返事をおかけして申し訳ありません。私は答えを更新しました。 – Arasu
私が言ったように、私のpreExecuteで行う "bindComponent()"呼び出しは、オートローダーによって上書きされるという問題があります。 – Gregoire