私は以下の制約(扱いにくいが制御不能)の対象となる小さなCakePHPアプリケーションを開発中です:2つの同一のデータベースのいずれかで動作する必要があります。例えば:CakePHP - ルートまたはURLに基づいてデータベースの設定を選択しますか?
http://www.example.com/myapp/foo/action/param
http://www.example.com/myapp/bar/action/param
最初の明白な解決策は、別のデータベース構成でmyapp/foo
とmyapp/bar
2つの同一のCakePHPアプリケーションを有することです。しかし、これはクルージング感がありますので、私は単一のアプリケーションを作成するエレガントな方法を見つけようとしています。
私が検討しているアプローチは次のとおりです。myapp/foo
とmyapp/bar
が同じコントローラに関連付けられるようなルートを定義します。その後、私のDATABASE_CONFIG
クラスにコンストラクタ与える:
function __construct() {
$pathParts = explode('/', $_SERVER['REQUEST_URI']);
if (array_search('foo', $pathParts)) {
$this->default = $this->fooConfig;
} else if (array_search('bar', $pathParts)) {
$this->default = $this->barConfig;
}
}
を(。どこもちろん私は2つのデータベースのためのfooConfig
とbarConfig
を定義しました)私は、URLのコントロールを持っているので、私はそこではないと確信することができURLにfoo
またはbar
の無関係の出現がある
私の質問は次のとおりです。この奇妙な状況を処理する、よりシンプルで洗練された方法がありますか?多分AppModel
および/またはAppController
の何か?重複したコードを取り除いていますが、あるコードのにおいを別のコードに置き換えるという感覚を揺さぶることはできません。
また、Model :: setDataSource() –
+1のようなデータソースの操作に役立つさまざまな方法をスイートコードで見つけることができます。私はこれを使って遊びます。 (また...歓迎!) – eaj
これは結局私に合理的な解決に導いた、ありがとう。 – eaj