我試圖從笨移動把CakePHP和想不出來實施管理面板的最佳途徑。在CI中,我將創建兩個不同的應用程序,一個用於前端,一個用於管理面板。最好的方式來實現管理面板CakePHP中
周圍的Googling後,我發現三種方法可以實現在CakePHP的管理面板:
- 路由 - 我不想通過控制器/型號,因爲我想用這是單獨的前端和管理面板
- 插件
- 兩個獨立的應用程序
我應該使用插件來實現管理面板,或者我應該有單獨的應用程序?一個優於另一個的好處?
我試圖從笨移動把CakePHP和想不出來實施管理面板的最佳途徑。在CI中,我將創建兩個不同的應用程序,一個用於前端,一個用於管理面板。最好的方式來實現管理面板CakePHP中
周圍的Googling後,我發現三種方法可以實現在CakePHP的管理面板:
我應該使用插件來實現管理面板,或者我應該有單獨的應用程序?一個優於另一個的好處?
我通常開發管理/後端作爲一個插件。這使您的後端/管理員控制器/視圖/模型與前端分離,您不必跳過箍環以擁有單獨的樣式表,佈局等。
另一個優點是前端和後端都仍然是同一個應用程序的一部分,所以如果需要,你可以共享邏輯/組件,例如你可以把幫助器放在前面 - 在另一插件後端(如插件/共享或插件/ Handytexttools),並利用這些都不管你想要
作爲一個經驗法則;將其他項目中可重複使用的組件放在單獨的插件中,這樣您就可以將這些插件添加到其他項目中而不會出現任何問題。保持你的插件簡單;創建一個僅包含一個或兩個助手或模型以及一些JavaScript文件的插件是沒有問題的。這會讓你更容易'櫻桃'選擇你需要的插件。一旦Cake已經「緩存」了插件中所有類的文件位置,單獨插件的開銷應該是最小的。
回到'管理員'插件。嘗試僅在您的管理插件中包含針對此項目的特定代碼,並在另一項中包含可重用部件的代碼(例如,管理面板的通用樣式表和佈局)。您就可以開始管理,插件爲您的下一個項目以最小的編碼
祝你的項目,並享受CakePHP的
老,指的是CakePHP的1.3,但仍然是一個問題,你應該檢查:CakePHP admin panel
的蛋糕的方式是路由。我會用像CakeDC Users這樣的插件讓事情變得更簡單。
我已經檢查過你指的帖子,並且只是指向了一個我不想使用的基於路由的管理面板。如果可以,我寧願保持我的控制器/模型分離。 – 2013-02-19 16:39:52
你可以使用「管理員」插件,但老實說,這個想法很糟糕,你最終會得到重複的代碼。我不得不在項目中處理這種情況,並將其重構爲使用前綴路由。實際上,通過將代碼放在一個分離的插件中是沒有任何好處的。 – burzum 2013-02-19 20:59:55
如果你想保持你的控制器和模型分開 - 我有一個單獨的應用程序走,雖然你有一堆的應用程序之間的重複代碼(維修頭痛等待發生)結束。
我的選擇是管理路由和管理的主題。
在/app/Config/core.php
啓用管理路由在AppController的beforeFilter():
$this->theme = isset($this->params['admin']) ? "Admin" : "Site";
把你所有的網站的觀點和資產注入/應用/視圖/主題/網站/
在/ app /視圖/主題/聯繫
插件方法呢?我搜索了一個或兩個CakePHP的管理插件。這是否爲單獨的應用程序提供額外的好處? – 2013-02-19 17:21:13
請閱讀我的回答,我試圖解釋使用插件的優點。如果管理面板旨在管理多個網站,則爲管理面板開發一個單獨的*應用程序*可能只是可取的。如果沒有,我不會創建一個單獨的應用程序 – thaJeztah 2013-02-19 19:40:35
我個人覺得基於路由的管理員只適用於簡單的管理面板。另外我不喜歡同一個文件中的管理員和前端代碼的想法。現在決定去插件的方式。 – 2013-02-22 16:11:39
你可以使用管理路由創建您的管理主題。退房:
http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing
另一種解決方案哪位,我覺得真的很容易工具 - 是這樣的:
在你AppController的:
public function beforeFilter(){
$this->set('current_user', $this->Auth->user());
}
這使得$ CURRENT_USER可用在你的應用程序。
然後在您的視圖文件,您可以檢查:
<?php if ($current_user['role'] == 'admin'){/*place code for admin users to see here*/} ?>
<?php if ($current_user){/*place code for logged-in users to see here*/} ?>
管理員前綴對於快速即時管理功能來說是一個不錯的功能,但不會分開前端和後端功能。如果你想分離兩者,前綴路由不是實現這一點的最佳方式。另外,在你的觀點(如管理等),把太多的邏輯很難維護,特別是對於較大的項目 – thaJeztah 2013-02-19 19:37:31
我知道這是一個古老的線程。但是想詢問是否有人在管理面板上實施插件時遇到問題。特別重複的代碼。
例如,您正在實施電子商務網站。你在主插件和管理插件中都有一個OrderController。你不覺得在兩個地方維護邏輯有點難嗎?
如何使用一個主控制器。它有兩個目的。一個作爲API,然後是管理員Web應用程序的控制器。
然後,您的公共端將基本上通過API進行通信以獲取數據。
你認爲這是一個好主意嗎?
您可以像使用admin_index.ctp管理意見只是改變這個
//Configure::write('Routing.admin', '管理員');
到
Configure :: write('Routing.admin','admin');
在core.php中和在控制器添加admin_index()函數
http://stackoverflow.com/questions/14474023/how-can-i-implement-multi-template-in-cakephp/14475492# 14475492 – 2013-02-20 03:40:21
與1.路由,絕對。 – 2013-02-20 21:56:18