Layout 科哈纳项目结构

Layout 科哈纳项目结构,layout,kohana,structure,kohana-3,Layout,Kohana,Structure,Kohana 3,我正在调查下一个项目中使用Kohana。该网站将包括用户注册(因此用户配置文件),用户将有一定的特权。该网站还将有一个管理部分,管理员可以在其中说阻止用户或删除帖子,或者查看使用情况统计数据。一个好的比较站点应该是一个多用户博客,每个博客作者都可以根据自己的权限发布/编辑/删除博客…举个例子 首先,我不确定如何设置控制器/视图结构,以便将管理部分与面向前端的站点分开。我使用的是Kohana3,所以我想到了这样的控制器结构:application/classes/controller/front(

我正在调查下一个项目中使用Kohana。该网站将包括用户注册(因此用户配置文件),用户将有一定的特权。该网站还将有一个管理部分,管理员可以在其中说阻止用户或删除帖子,或者查看使用情况统计数据。一个好的比较站点应该是一个多用户博客,每个博客作者都可以根据自己的权限发布/编辑/删除博客…举个例子

首先,我不确定如何设置控制器/视图结构,以便将管理部分与面向前端的站点分开。我使用的是Kohana3,所以我想到了这样的控制器结构:application/classes/controller/front(正面)…和application/classes/controller/admin(用于管理部分)

或者我注意到您可以使用Route类来设置路由,因此我可以设置“admin”路由。例如:www.example.com/admin将显示管理员登录屏幕。 www.example.com--->前端控制器

另外,我是否可以以某种方式将“管理”视图和控制器与“正面”视图和控制器分开,比如根据文件夹结构将它们分开?非常感谢您的帮助


谢谢。

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

  • 应用
    • 班级
      • 控制器
      • 模型
    • 观点
  • 管理应用程序
    • 班级
      • 控制器
      • 模型
    • 观点
这种方法允许您单独定制每个引导环境,并很好地分离各种文件。但是,由于这种分离,您需要将共享代码构造为模块,以允许在两个应用程序之间共享功能。当然,你可以复制代码,但那现在就错了,不是吗!;)

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

  • 应用
    • 班级
      • 控制器
        • 管理员
      • 模型
        • 管理员
    • 观点
      • 管理员
这种方法使文件更加混杂,可能会使维护变得更加困难(取决于您的视角),但它肯定更容易实现。这种方法的一个优点是,您可以创建一个/public_html/admin文件夹,并使用.htaccess对其进行保护(您还需要添加一个normal index.php文件的副本)。然后,无论何时发出任何请求,.htaccess文件都将启动并在Web服务器级别保护您的管理应用程序。此外,请求将自动路由到各个文件夹中的/admin子文件夹,因此在路由方面,您所要做的工作也会减少

这两种情况都将使用Kohana(令人敬畏的)路由机制来处理哪些请求去了哪里,并且从应用程序访问的角度来看,每个请求都与另一个请求一样安全。顺便说一下,我想你是在用KO3

编辑

实际上,如果您也使用第一种方法,那么您可以.htaccess保护管理员应用程序。您只需修改/admin/index.php文件以指向管理员应用程序。

我的方法与第一个类似,但对于每个模块,我将创建一个管理员控制器和一个前端控制器-我的所有管理员控制器都将继承自一个抽象管理员控制器,该控制器将在before方法中进行身份验证-或者类似的东西。

谢谢你的明确回答。我将检查第二种方法。方法1看起来不错,但我不太确定模块目前是如何工作的。非常感谢!嗨,马特,我决定不再是一个懦夫,尝试第一个文件夹结构。我把一切都安排好了。但是现在,我是否要在“admin_应用程序”中创建一个单独的bootstrap.php文件?当应用程序转到或时,我如何告诉应用程序使用此引导?感谢lotok,我想我将创建两个'index.php'文件。1.site.php和2.admin.php…将它们都放在文档根中。还要创建另一个bootstrap.php文件并放置在“admin_application”中。然后使用.htaccess路由到正确的应用程序(管理应用程序或应用程序)…不确定,但我会尝试。感谢您的帮助。从新的KO3安装-复制您的应用程序文件夹,称之为“admin”或其他名称,将引导程序的基本url更改为“/admin”。在“/public_html/admin”中创建一个新文件夹,在index.php和.htaccess之间复制。在index.php中,编辑应用程序、模块和系统变量以指向新的管理应用程序。在.htaccess中,将RewriteBase变量编辑为“/admin”。这些都是记忆中的东西,所以可能有一些我已经忘记了,但如果你遇到麻烦,请访问Kohana的论坛。我记不起线程的名称(否则我会发布),但他们之前已经讨论过这个话题,而且是一个友好的群体。