私はCakePHP 2.3の高度なインストールを作成しています(ケーキのすべてのコアファイルが配置されている1つの同じlibフォルダーを共有するいくつかのアプリ-ウェブサイト-)。これは問題なく動作します。各アプリの Config フォルダーにあるcore.phpファイルを編集して、cake のファイルの場所を認識できるようにします。ファイルシステムは次のようになります。
[root]
[cake-core-files]
[websites]
[website-1]
[app]
[plugins]
[vendors]
[website-2]
...
[website-N]
これらの異なるアプリは、実際にはいくつかの点で異なります (それらは異なる Web サイトです) が、同時に、それらすべてに共通する多くのことがあります (たとえば、一部のモデル、コントローラー、機能など)。私がやりたいのは、可能であれば、これらのアプリで多数のコントローラーやモデルなどを共有して、アプリごとに複製するのではなく、1 か所に配置できるようにすることです。
私は CakePHP のベンダーとプラグインの概念を見てきました(私は実際にこれらの Web サイトでプラグインを使用していますが、/app/plugins フォルダーから)、それが私の場合に機能するかどうか、またはどのように設定するかはわかりませんそれまで。[cake-core-files] と [websites] の同じレベルに別のフォルダー ([shared_objects] など) を作成するというアイデアがあると思いますが、そのために Cake をどのように構成する必要があるかわかりません。または、各アプリからそれらのオブジェクトを呼び出す方法。
何か案は?
編集
以下のコメント/応答に基づいて、bootstrap.php の App:build() 関数を使用してこれを実行しようとしていますが、機能させることができません。これは私がやったことです:
すべてのアプリ間で共有するものを配置する新しいフォルダーを追加しました。
[root] [cake-core-files] [shared-stuff] --> NEW FOLDER [Model] [Config] [websites] [website-1] など...
モデルUser.phpを新しいフォルダー[shared-stuff/Model]内に配置しました
ブートストラップに次の行を追加しました。
App::build(array('Model' => array('/path/to/shared-stuff/Model')));
モデルUser.phpを元の場所[website-1/app/Model]から削除しました
この手順の後、動作しているように見え、モデル User.php が[shared-stuff]フォルダーから正しく読み込まれます (私はApp::objects('Model'); の印刷をテストしました。ユーザー モデルがリストされています)。ただし、実際には機能しません.login()関数でUsersControllerからそのモデルを呼び出すと、ログインは機能しません(ただし、デバッグが2に設定されていても、エラーは発生しません)。
このモデルは、デフォルトのデータベース構成とは異なるデータベース構成を使用します ( usersテーブルは、デフォルトのデータベースとは異なるデータベースにあります)。これが重要かどうかはわかりません。
確かなことは、元の場所 ( [website-1/app/Model] ) にまったく同じ User.php モデルを残すと、ログインを含めてすべて正常に動作するため、設定方法に問題があることです。モデル自体ではなく、これらすべての共有のものです。
私が間違っていることは何ですか?