我正在调查使用Kohana进行下一个项目。该站点将包括用户注册(以及用户配置文件),其中用户将具有某些特权。该网站还将有一个管理部分,管理员可以在其中说阻止用户或删除帖子或查看使用情况统计信息。一个好的比较网站将是一个多用户博客,每个博主根据她/他的权限可以发布/编辑/删除博客......仅作为一个例子。
首先,我不确定如何设置控制器/视图结构,以便将管理部分与面向前方的站点分开。我正在使用Kohana 3,所以我在想一个像这样的控制器结构:application / classes / controller / front(front facing)...和application / classes / controller / admin(用于管理部分)。
或者我注意到你可以使用Route类来设置路由,所以我可以设置一个“admin”路由。例如:www.example.com/admin将进入管理员登录屏幕。 www.example.com --->前控制器。
同样,我可以以某种方式将“管理员”视图和控制器与“前置”视图和控制器分开,例如根据文件夹结构进行划分吗?非常感谢任何帮助。
谢谢。
答案 0 :(得分:4)
您可以为管理员和前端设置单独的应用程序文件夹:
这种方法允许您单独自定义每个引导环境,并很好地分离各种文件。但是,由于这种分离,您需要将共享代码构建为模块,以允许在两个应用程序之间共享功能。你当然可以复制代码,但现在就错了,不是吗! ;)
另一种方法是在单个应用程序的每个文件夹中包含管理员子文件夹:
这种方法使文件更加混杂,并且可能使维护更难(取决于您的观点),但它实际上更容易实现。这种方法的一个优点是你可以使用.htaccess创建/ public_html / admin文件夹并保护它(你还需要添加普通index.php文件的副本)。然后,无论何时发出任何http://yourdomain.com/admin请求,.htaccess文件都将启动并保护您的管理应用程序在Web服务器级别。此外,请求将自动路由到各个文件夹中的/ admin子文件夹,因此您在路由方面的工作量也会减少。
这两种情况都会使用Kohana(非常棒的)路由机制来处理哪些请求在哪里,从应用程序访问的角度来看,每个请求都是另一个。我假设你顺便使用KO3 ......
修改强>
实际上,如果你也使用第一种方法,你可以.htaccess保护管理员应用程序。您只需要调整/admin/index.php文件以指向管理员应用程序。
答案 1 :(得分:1)
我的方法与第一个类似,但是对于每个模块,我将创建一个管理控制器和一个前端控制器 - 我的所有管理控制器都将从一个抽象的管理控制器继承,该控制器将在before方法中进行身份验证 - 或者像这样的东西。