1

這是因爲我想在同一個項目中開發一個具有多個應用程序的Web平臺。如何將規則添加到Zend URL映射並編寫多個MVC路徑?


在任何MVC的Web應用程序,我們應該有這樣的默認URL模式:

domain/controller/action/parameters

1:在Zend的,我能做些什麼(在哪些文件)更改此架構以在controller名稱之前添加application名稱?

預期結果:domain/application/controller/action/parameters

2:我怎樣才能實現這個新的URL塊的後果,我會分開MVC爲每個應用程序而言,保持共享資源在一個單獨的目錄中?可我在Zend的autoloader

做什麼樣的變化預期結果:

/public_html/ 
/public_html/platform 
/public_html/platform/apps 

/public_html/platform/apps/base (user interface container) 

/public_html/platform/apps/crm 
/public_html/platform/apps/crm/model 
/public_html/platform/apps/crm/view 
/public_html/platform/apps/crm/control 
/public_html/platform/apps/crm/public 
/public_html/platform/apps/crm/public/css (and etc.) 

/public_html/platform/apps/erp 
/public_html/platform/apps/erp/model 
/public_html/platform/apps/erp/view 
/public_html/platform/apps/erp/control 
/public_html/platform/apps/erp/public 
/public_html/platform/apps/erp/public/js (and etc.) 

/public_html/platform/sys 
/public_html/platform/sys/core 
/public_html/platform/sys/cfg 

/public_html/platform/libs/ 
/public_html/platform/libs/zend 
/public_html/platform/libs/template_it 
/public_html/platform/libs/custom 
+0

首先第一件事情:您是否使用ZF1或ZF2? – STLMikey

+0

@STLMikey我打算使用最新ZF2,但如果這種情況增加了兩個困難,我可以建立一個簡單的MVC和使用一些的Zend庫,專爲DB和PDF。 – PSyLoCKe

+3

ZF2中的每個獨立模塊都在模塊的module.config文件中定義了它自己的路由結構。如果跨模塊需要共享結構,則應用程序配置文件將放置在這些位置。 – STLMikey

回答

1

我認爲這是具有實際不同ZF2應用程序一樣簡單,每個人都在自己的文件夾,並在同一水平線上,一「供應商「文件夾,你把所有的共享結構(來自zend,第三方庫等)。

然後供應商的文件夾裏面,我會給自己的共享代碼的另一個文件夾,包括所有模塊必須通過應用程序的多個使用,所以你的代碼是爲自己的圖書館。

由於您的應用程序實際上是在域/應用程序,每個人都有其自己的配置,這是非常簡單的有domain/application/controller/action/parameters路線:您只需創建你的正常controller/action/parameters路線,因爲該應用程序實際上駐留在domain/application/和可是沒有路由器關心它。

正如您所注意到的另一個問題是自動裝載機。你只需要更新您的application.config.php內的共享模塊引用您的應用程序

return array(
    'modules' => array(//.... 
    ), 
    'module_listener_options' => array(
     'config_glob_paths' => array(
      'config/autoload/{,*.}{global,local}.php' 
     ), 
     'config_cache_enabled' => false, 
     'cache_dir'   => 'data/cache', 
     'module_paths' => array(
      './module', 
      '../vendor',//reference to your library modules 
     ), 
    ), 
    //... 
); 
當然

的每一個人,如果犯規直接駐留內vendor/module但像vendor/libraryname/module東西的模塊,你要看看你的自動加載系統(Composer自動加載或其他)並將類或名稱空間添加到相應的地圖。

相關問題