我试图从笨移动把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