2013-02-19 85 views
6

我試圖從笨移動把CakePHP和想不出來實施管理面板的最佳途徑。在CI中,我將創建兩個不同的應用程序,一個用於前端,一個用於管理面板。最好的方式來實現管理面板CakePHP中

周圍的Googling後,我發現三種方法可以實現在CakePHP的管理面板:

  1. 路由 - 我不想通過控制器/型號,因爲我想用這是單獨的前端和管理面板
  2. 插件
  3. 兩個獨立的應用程序

我應該使用插件來實現管理面板,或者我應該有單獨的應用程序?一個優於另一個的好處?

+0

http://stackoverflow.com/questions/14474023/how-can-i-implement-multi-template-in-cakephp/14475492# 14475492 – 2013-02-20 03:40:21

+0

與1.路由,絕對。 – 2013-02-20 21:56:18

回答

16

我通常開發管理/後端作爲一個插件。這使您的後端/管理員控制器/視圖/模型與前端分離,您不必跳過箍環以擁有單獨的樣式表,佈局等。

另一個優點是前端和後端都仍然是同一個應用程序的一部分,所以如果需要,你可以共享邏輯/組件,例如你可以把幫助器放在前面 - 在另一插件後端(如插件/共享或插件/ Handytexttools),並利用這些都不管你想要

作爲一個經驗法則;將其他項目中可重複使用的組件放在單獨的插件中,這樣您就可以將這些插件添加到其他項目中而不會出現任何問題。保持你的插件簡單;創建一個僅包含一個或兩個助手或模型以及一些JavaScript文件的插件是沒有問題的。這會讓你更容易'櫻桃'選擇你需要的插件。一旦Cake已經「緩存」了插件中所有類的文件位置,單獨插件的開銷應該是最小的。

回到'管理員'插件。嘗試僅在您的管理插件中包含針對項目的特定代碼,並在另一項中包含可重用部件的代碼(例如,管理面板的通用樣式表和佈局)。您就可以開始管理,插件爲您的下一個項目以最小的編碼

祝你的項目,並享受CakePHP的

+1

感謝您的解釋。很抱歉,因爲我沒有要求的聲望點,所以無法向您提供答案。 – 2013-02-22 16:06:07

+0

我向你投稿。 thaJeztah在我的CakePHP問題上幫了我很大忙。 – bowlerae 2013-02-22 22:10:30

+0

@bowlerae感謝您的投票,我希望我的回答也會對其他人有所幫助:) – thaJeztah 2013-02-22 22:43:36

0

老,指的是CakePHP的1.3,但仍然是一個問題,你應該檢查:CakePHP admin panel

蛋糕的方式是路由。我會用像CakeDC Users這樣的插件讓事情變得更簡單。

+0

我已經檢查過你指的帖子,並且只是指向了一個我不想使用的基於路由的管理面板。如果可以,我寧願保持我的控制器/模型分離。 – 2013-02-19 16:39:52

+0

你可以使用「管理員」插件,但老實說,這個想法很糟糕,你最終會得到重複的代碼。我不得不在項目中處理這種情況,並將其重構爲使用前綴路由。實際上,通過將代碼放在一個分離的插件中是沒有任何好處的。 – burzum 2013-02-19 20:59:55

4

如果你想保持你的控制器和模型分開 - 我有一個單獨的應用程序走,雖然你有一堆的應用程序之間的重複代碼(維修頭痛等待發生)結束。

我的選擇是管理路由和管理的主題。

在/app/Config/core.php

啓用管理路由在AppController的beforeFilter():

$this->theme = isset($this->params['admin']) ? "Admin" : "Site"; 

把你所有的網站的觀點和資產注入/應用/視圖/主題/網站/

在/ app /視圖/主題/聯繫

+0

插件方法呢?我搜索了一個或兩個CakePHP的管理插件。這是否爲單獨的應用程序提供額外的好處? – 2013-02-19 17:21:13

+0

請閱讀我的回答,我試圖解釋使用插件的優點。如果管理面板旨在管理多個網站,則爲管理面板開發一個單獨的*應用程序*可能只是可取的。如果沒有,我不會創建一個單獨的應用程序 – thaJeztah 2013-02-19 19:40:35

+0

我個人覺得基於路由的管理員只適用於簡單的管理面板。另外我不喜歡同一個文件中的管理員和前端代碼的想法。現在決定去插件的方式。 – 2013-02-22 16:11:39

0

你可以使用管理路由創建您的管理主題。退房:

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*/} ?> 
+0

管理員前綴對於快速即時管理功能來說是一個不錯的功能,但不會分開前端和後端功能。如果你想分離兩者,前綴路由不是實現這一點的最佳方式。另外,在你的觀點(如管理等),把太多的邏輯很難維護,特別是對於較大的項目 – thaJeztah 2013-02-19 19:37:31

0

我知道這是一個古老的線程。但是想詢問是否有人在管理面板上實施插件時遇到問題。特別重複的代碼。

例如,您正在實施電子商務網站。你在主插件和管理插件中都有一個OrderController。你不覺得在兩個地方維護邏輯有點難嗎?

如何使用一個主控制器。它有兩個目的。一個作爲API,然後是管理員Web應用程序的控制器。

然後,您的公共端將基本上通過API進行通信以獲取數據。

你認爲這是一個好主意嗎?

0

您可以像使用admin_index.ctp管理意見只是改變這個

//Configure::write('Routing.admin', '管理員');

Configure :: write('Routing.admin','admin');

在core.php中和在控制器添加admin_index

()函數

相關問題