私は私の代理店で、最近、同じ問題を見てきたと私は現在、テストだソリューションは、以下のアプリのフォルダ構造が含まれます。
app/
default/
controllers/
models, etc
ecommerce/
controllers/
models, etc
lib/
S24/
ComponentCode.php
modules/
ecommerce/
admin/
controllers/
models, etc
default/
controllers/
models, etc
data, public web, temp, other ZF folders
考え方は共通部品コードがlib
に格納されていますモジュラーアプリケーションはmodules
に格納され、個々のクライアントWebサイトコードはapp
に格納されます。
lib/S24
とmodules/ecommerce
のフォルダは共通しており、プロジェクトごとに同じ(私たちはこれらの外部のSVNフォルダ)です。
app
はモジュールディレクトリなので、default
とecommerce
フォルダはZF内にモジュールを作成します。app/default
はデフォルト(つまり、モジュールなし)のコントローラ用です。 app/ecommerce
には、コントローラーを単に拡張するコントローラーのセットが含まれています(modules/ecommerce/default/controllers
内)。
希望すればapp/ecommerce/controllers
の機能を拡張したり、新しい機能を追加することができます。
私たちはモジュール管理システムを同じに保ちたいと思いますし、複数の管理システム(www.domain.com/admin/ecommerceやwww.domain.com/admin/userのようなURL)をサポートしたいので、私たちはモジュール管理者システムを直接modules
フォルダから削除します。任意のカスタム管理ページをapp/admin/controllers
に追加できます。
// Add Controller folder
$front->addControllerDirectory('/path/to/modules/ecommerce/admin/controllers', 'ecommerceAdmin');
// Add route
$router->addRoute(
'ecommerceAdmin',
new Zend_Controller_Router_Route('admin/ecommerce/:controller/:action',
array('module' => 'ecommerceAdmin',
'controller' => 'index',
'action' => 'index'))
);
現在、私はこれをテストしていますが、自分のシステムにいくつかのアイデアがあることを願っています。これが完全に安定したら、そのトピックに関するブログ記事を書きたいと思っています。
ご返信ありがとうございます。カスタム機能は完全にカスタマイズされているため、コアコードベースにマージするべきではありません。通常、カスタム機能はコントローラ、アクション、モデル、およびビューで構成されます。理想的には、私たちが探している解決策は、カスタムコントローラ、モデルなどを使って既存のZend Framework Webアプリケーションを拡張する方法です。 – Agora