我一直在努力去實現一個多模塊的ZF應用程序。我發現了一大堆關於多模塊應用程序的資源,事實上在整個模塊中,事情並不盡如人意。我得出的結論是,對於我們將要使用的特定實現,我所讀過的所有現有方法都有一些缺點,這對我們來說是一個阻礙,所以我開始思考問題。Zend Framework多模塊子域獨立引導使用環境變量和調整index.php
我想出了一個可行的解決方案,並允許多模塊隔離引導,但我想從一些ZF專家那裏得到一些關於這樣做是否存在潛在的不可預見情況的輸入。
基本域是example.org。我也有admin.example.org,dashboard.example.org和api.example.org。我希望每個這些子域映射到它的同名模塊(子域管理員映射到模塊管理員等)。我將Apache虛擬主機的子域配置爲serveraliases。
然後,我還定義了以下內容:
SetEnvIf Host ^admin* MODULE_TO_USE=admin
然後,在index.php中,我有以下幾點:
/** Zend_Config_Ini */
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
$config = $config->toArray();
$module = $config['resources']['frontController']['defaultModule'];
if(getenv('MODULE_TO_USE')) {
$module = getenv('MODULE_TO_USE');
$config['resources']['frontController']['defaultModule'] = $module;
}
$module = ucfirst($module);
$config['bootstrap']['path'] = APPLICATION_PATH . "/{$module}_Bootstrap.php";
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
$config
);
$application->bootstrap()
->run();
然後,而不是通常的bootstrap.php文件,我有Default_Bootstrap.php,Admin_Bootstrap.php等等等等......據我所知,因爲在這種情況下,模塊直接映射到子域,然後使用邏輯來檢查虛擬主機conf(或.htaccess中的那些命名子域,就此而言)不應該破壞任何東西。但我不是ZF大師,所以我不能確定。
我會很感激任何反饋意見。 (注意:我知道它們不是「真正的」子域名,只是服務器別名,但我稱它們爲子域名以協助將來的搜索,因爲大多數人會搜索「子域名」而不是「serveralises」 )
......或者說,看這個另一種方式,就是你是「中」取其模塊,是默認的模塊... – 2012-01-13 17:55:28