3

我已经使用about、products 等控制器创建了我的网站……这给了我example.com/about/ 等。

如何创建具有相同控制器名称的管理部分,例如 example.com/admin/about 或 example.com/admin/products ?

如何组织我的控制器?

4

2 回答 2

5

补充WebweaverD答案的另外2 个选项。

  1. 使用模块化分离
  2. 创建第二个应用程序文件夹和索引文件,负责管理,将它们连接到同一个系统文件夹。

设置后,第二个选项非常容易管理。有一些变化,但我发现下面的结构是最方便的。

mykewlwebsite.com
  apps/
    frontend/
      app/            frontend codeigniter application folder
      public/
        index.php
        assets/       frontend js, css, images
    backend
      app/            backend codeigniter application folder
      public/
        index.php
        assets/       backend js, css, images
  config/
    database.php
    constants.php
  system/             codeigniter system folder

database.php文件包含来自 CodeIgniter 的代码,并config/database.php为项目的所有应用程序共享 - 只需删除所有代码并添加require_once('../../../../config/database.php');config/database.php

公共文件夹中的index.php文件有两个重要的变量$system_path$application_folder将它们更改为

$system_path = '../../../system/codeigniter';
$application_folder = '../app';

constants.php文件可以包含一些常量ENVIRONMENT,例如文件中的常量index.php和其他常量。只是require_once()index.php文件中。

虽然有利有弊。

优点

对于那些在 localhost 上开发并通过 FTP 或其他系统部署到服务器的人来说,他们可以简单地上传一个文件夹 -apps并覆盖目标文件夹而不必担心覆盖database.php设置(我相信你们中的大多数人的设置与本地不同) )。

添加一个应用程序很容易 - 只需复制现有的一个。您可以根据需要添加任意数量的应用程序 - api、ajax、用户文件柜等。

缺点

如果您有一个域mykewlwebsite.com并且能够向其中添加子域,则可以使用此结构,因此您只需为每个域配置主文件夹:

mykewlwebsite.com:路径/到/mykewlwebsite.com/apps/frontend/public/

admin.mykewlwebsite.com:路径/to/mykewlwebsite.com/apps/backend/public/

api.mykewlwebsite.com:路径/到/mykewlwebsite.com/apps/api/public/

于 2012-08-27T17:56:08.570 回答
4

你有几个选择:

1)创建一个子文件夹 - 将它们放在控制器目录中名为 admin 的文件夹中(在 application/contollers/admin/products.php 中)

这里有一个警告,你只能深入一个文件夹,否则 codeigniter 会感到不安。此外,它将首先使用第一级控制器/方法,因此请注意命名冲突 - 例如,如果您有一个带有产品方法的管理控制器,它将在它在管理目录中查找产品控制器之前被调用。(访问 example.com/admin/products 时)

2)使用路由文件- 如果只是您担心的 url,您可以随意调用控制器,并使用 application/config/routes 将这些路径重定向到您想要的控制器,如下所示:

控制器名称:admin_products.php

路线文件:

$route['admin/products'] = "admin_products";

3)对所有人使用主控制器- 最后的选择是拥有一个管理控制器并在其中使用命名方法,例如,您有 admin.php 控制器,其中包含产品方法,然后由 admin/products 调用uri(虽然在大型应用程序/站点中这可能会变得混乱 - 不推荐)

希望我已经为您解释了这一点,如果您需要任何澄清,请询问,我会尽力详细说明。

于 2012-08-27T17:50:52.067 回答