私が働いているクライアントには、Yiiで書かれたCMSがあります。現在、彼らのビジネスの一部は、各顧客の特定のニーズを満たすためにCMSをカスタマイズすることです。コードの約90%は、基本的に1つのディレクトリから別のディレクトリにコピーして貼り付けることによって再利用されます。このプロジェクトに取り組んでいる間、変更を共有コードベースに数回マージする必要がありました。
これらのサイトのすべてまたはほとんどが同じサーバーでホストされており、ログインに基づいて表示する機能を変更する単一のログインを使用する方が理にかなっているように思われます。場合によっては、コントローラーとモデルを含むビュー全体または一部をオーバーライドすることを意味します(たとえば、_form.phpは顧客ごとに変わる可能性があります)。ほとんどの場合、それはそのクライアントのためだけに書かれた機能のビットのために新しいコントローラーを追加することを意味します。
ここでフロントエンドサイトとバックエンドサイトの両方を持つことについて読みました:http ://www.yiiframework.com/wiki/63/organize-directories-for-applications-with-front-end-and-back-end-using- webapplicationend-behaviorですが、それは適切ではないようです(たとえば、全員が別の開始phpファイルにアクセスすることは望ましくありません)
理想的には、ユーザーにログインしてサイトIDを割り当てます。これにより、共有MVCオブジェクトのデータがフィルタリングされ、ユーザー専用のデータが追加されるか、必要に応じてオーバーライドされます。
直感的には、次のようなものが理にかなっているようです。
共有コントローラーはここにあります:
/protected/controllers
client1のオーバーライドと追加はここにあります:
/protected/controllers/client1
また:
/protected/client1/controllers
しかし、Yiiにこれを最も効率的で管理しやすい方法で実行させる方法がわかりません。これはYiiで機能するものですか、それとも意図しない方法で壊してしまいますか?それがうまくいくなら、それを達成するための最良の方法は、今から6か月後、または私に取って代わるランダムな開発者にはっきりとわかるようにするために何ですか?