2011-01-13 60 views
1

我想對我的建築有一些反饋。我的Zend Framework項目包含幾個模塊和我們構建頁面的模塊。它與默認的ZF應用程序略有不同,因爲多個模塊可以創建一個頁面。例如,聯繫頁面由零件文本(文本模塊)和聯繫表單(聯繫模塊)組成。或者三列頁面有三個文本模塊在一頁上運行。到目前爲止這麼好(這一切都很好)。ZF的建築諮詢admin

管理員界面

現在,我們的管理員。在管理界面中,我們編輯一個頁面(而不是一個模塊!),這使得它很難。一個頁面可以有一個或多個Zend_Form實例。例如,一個文本可以用textarea編輯,一個聯繫表格形成一些輸入字段。這些需要作爲更大的Zend_Form實例的子表單顯示在視圖中。還需要顯示html(查看腳本),例如列出博客文章或投資組合中的項目。並非所有的模塊都是「可管理的」(例如我們的站點地圖,沒有什麼可配置的),但是那些需要支持創建,更新和刪除的模塊。

當前架構

我們的服務現在的工作。很容易檢查(存在類Portfolio_Service_Admin並執行Admin_Service_AdminInterface?)。但是一個投資組合已經變得很難實施:該服務扮演着一種控制器的角色,支持投資組合的創建,更新和刪除,但也包括投資組合類別的CRUD和投資組合項目的CRUD(在一個類中!)。

如果這是不明確的,我可以添加更多的信息我們目前的做法

什麼呢?

因爲服務現在作爲一個排序的控制器,I是控制器的思維(杜)。唯一的缺點是控制器需要返回表單將該模塊表單添加爲更大表單的子表單(而不是添加到響應!)。此外,一個頁面上的多個模塊導致dispatchloop的很多迭代,這不是非常有效。

所以:你有什麼建議,如何控制呢?

+0

那麼在你的管理區域,編輯一個頁面的時候,Zend_Form有很多子表單提交到哪裏?你有沒有足夠智能的頁面控制器可以通過子窗體並將每個部分分配給相應的模塊? – 2011-01-14 14:02:38

回答

0

我想現在回來。我們開始使用ZF2新的CMF(內容管理框架)應用程序,並解決了這個問題(儘管同時我們有另一種解決方案)。

頁面和模塊現在是1:1連接。這使得管理員變得更容易,因爲它可以簡單地將請求代理到適當的模塊。這將作爲開源發佈,所以也許在不久的將來,我會通過鏈接到github評論這個答案。

1

我相信你混淆了MVC模塊,並且你在呼喚「頁面模塊」的內容。這聽起來像你需要一個模塊和幾個模型。

Pages_Model_Page有很多Pages_Model_Module。每個Pages_Model_Module都有一個窗體(Pages_Form_Module_ *)和getForm()方法來獲取模塊的表單。在getForm()中,可以創建「模塊」窗體的新實例,並填充「模塊」的數據。

每「頁」,獲得了「模塊」,把每形式,作爲一個子表單,在標準Zend_Form和再通過查看。提交後,重複以上建立表單,然後驗證。如果有效,則循環遍歷每個模塊並應用更改。

有了這個方法,你必須爲每個「頁面模塊」(文字,圖片,表格,RSS,視頻)的一種模式和形式,當你需要一個新的,你只需創建一個模型和形式。