2012-12-06 43 views
1

我正在使用CakePHP 2.2.3,我需要爲我的網站構建一個管理/控制面板區域。需要關於組織代碼的建議

我有很多模型和控制器與此相關的模型,並在儀表盤我需要有CRUD的所有帖子/用戶/新聞等

很顯然,我需要建立一些索引操作儀表盤控制器的能力這將顯示儀表板「主頁」頁面。

我的問題是:在哪裏把所有其他的行動 - 對帖子/用戶/其他事情添加/編輯? 我應該將這些操作放在這個新的儀表板控制器中,還是把這個操作放到相關的控制器(Posts/Users ..)?

回答

4

在每個控制器中保留您的特定操作。 DashbaordsController適用於任何需要顯示大量不同模型信息的頁面,但CRUD操作應保存在自己的Controller中。

如果您希望/需要一個頁面才能在該頁面上實際執行CRUD操作,則可以使用ajax和STILL調用該特定控制器的操作。底線,如果你試圖把所有的CRUD放到一個控制器中,它會變得混亂,並且對於未來的程序員(包括你自己現在的6個月)來說會很混亂。

包含來自其他模型$this->loadModel('MyModel');的數據非常容易,在他們各自的控制器中執行CRUD操作並不是很麻煩。再次 - DashboardsController對於那些幾乎完全像儀表板的頁面仍然很好,並且沒有與特定模型聯盟。但不適用於每個模型的CRUD。

+0

謝謝。但是如果我想讓所有與管理區域相關的方法都使用特定的佈局,我應該在每種方法中放置..-> layout(admin),還是有一種更簡單的方法來綁定一組要使用的方法具體的視圖佈局?我知道我可以使用BeforeFilter/BeforeRender,但是當前控制器中的所有方法都將使用此管理佈局。 – Derp

+0

在您的'beforeFilter'中,您可以執行類似if(isset($ this-> request-> params ['admin'])){$ this-> layout ='admin'; }' - 這仍然允許您根據需要覆蓋每個管理操作。 (如果你使用beforeRender,你不能使用方法特定的佈局 - 我想!)。 – Ross

+0

@ user1604153 - 已被詢問和回答很多次,包括這裏:http://stackoverflow.com/questions/4180655/change-admin-layout-in-cakephp - 但你不明白或無法弄清楚,你應該問另一個問題,而不是添加它作爲評論.. – Dave

0

一般來說,理想的方法是做簡潔的控制器,並儘量保持邏輯儘可能靠近模型。理想情況下,您希望引入用於代碼重用和測試的庫。羅伯特馬丁又名叔叔鮑勃說,網絡交付和數據庫應該儘可能多的插件。這可以讓你的單元測試更好。至於你的具體情況我想保持它接近REST,因爲我可以這樣分開控制器理想地委託給一些較低級別的東西。