2010-05-14 107 views
2

我正在调查使用Kohana为我的下一个项目。该网站将由用户注册(以及用户配置文件)组成,用户将拥有某些特权。该网站还将有一个管理员部分,管理员可以去阻止用户或删除帖子,或查看使用情况统计信息。一个好的比较网站将是一个多用户博客,每个博客取决于她/他的权限可以发布/编辑/删除博客......只是一个例子。kohana项目结构

首先,我不确定如何设置控制器/视图结构以将管理部分与前端网站分开。我正在使用Kohana 3,所以我想到了一个像这样的控制器结构:application/classes/controller/front(front facing)...和application/classes/controller/admin(用于管理部分)。

或者我注意到你可能可以使用Route类来设置路由,所以我可以设置一个“admin”路由。例如:www.example.com/admin将导致管理员登录屏幕。 www.example.com --->前端控制器。

同样,我可以以某种方式将“管理员”视图和控制器从“面向前”的视图和控制器中分离出来,就像根据文件夹结构划分它们一样吗?很感谢任何形式的帮助。

谢谢。

回答

4

你可以为管理员和前端有一个单独的应用程序文件夹:

  • 应用
      • 控制器
      • 模型
    • 意见
  • admin_application
      • 控制器
      • 模型
    • 视图

这种方法将允许您分别自定义每个引导环境,并很好地分离各种文件。但是,由于这种分离,您需要将共享代码构建为模块,以便在两个应用程序之间共享功能。你当然可以复制代码,但现在会出错,难道不是!)

另一种方法是,以具有单一的应用程序的每个文件夹中管理的子文件夹:

  • 应用
      • 控制器
        • 管理员
      • 模型
        • 管理
    • 意见
      • 管理

这种方法会让文件混淆一些,并且可能会使事情难以维护(取决于您的观点),但实施起来肯定更容易。这种方法的一个优点是你可以创建一个/ public_html/admin文件夹并使用.htaccess保护它(你还需要添加一个普通index.php文件的副本)。然后,无论什么时候发出http://yourdomain.com/admin请求,.htaccess文件都会在web服务器级别启动并保护您的管理应用程序。此外,该请求会自动路由到各个文件夹中的/ admin子文件夹,因此您在路由方面的工作量也较少。

这两种情况都会使用Kohana的(真棒)路由机制来处理哪些请求去了哪里,并且每个从应用程序访问角度来看都是安全的。我假设你使用KO3的方式...

编辑
其实,你可以为.htaccess如果使用第一种方法过于保护管理应用程序。您只需要修改/admin/index.php文件以指向管理员应用程序。

+0

感谢您的明确答案MatW。我会检查第二种方法。方法1看起来不错,但我不太确定模块目前的工作方式。万分感谢! – berto77 2010-05-17 15:00:39

+0

嗨马特,我决定不再是一个wimp并尝试第一个文件夹结构。我已经设置了一切。但是现在,我在'admin_application'中创建一个单独的bootstrap.php文件吗?以及如何告诉我的应用程序在http://mydomain.com/admin或http://admin.mydomain.com上使用此引导程序?非常感谢 – berto77 2010-05-18 15:05:17

+0

好吧,我想我会创建两个'index.php'文件。 1.site.php和2.admin.php ...将这两个文件放在文档根目录下。还要创建另一个bootstrap.php文件并放在'admin_application'中。然后使用.htaccess路由到正确的应用程序(admin_application或应用程序).​​..不知道,但我会尝试。帮助赞赏。 – berto77 2010-05-18 15:12:15

1

我的方法与第一个类似,但是对于每个模块,我都会创建一个管理控制器和一个前端控制器 - 我的所有管理控制器都将从一个抽象的管理控制器继承,或者类似的东西。

+0

好点。谢谢- – berto77 2010-05-17 15:01:13