在Code Igniter 2.0中创建管理部分控制器和视图



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

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

如何组织控制器?

还有两个选项来补充WebweaverD答案。

  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文件可以有一些常量,如index.php文件中的ENVIRONMENT常量和其他一些常量。只需从index.php文件中选择require_once()

尽管有利弊。

PROS

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

再添加一个应用程序很容易——只需复制一个现有的应用程序即可。您可以添加任意数量的应用程序——api、ajax、用户机柜等。

CONS

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

mykewlwebsite.com:路径/to/mykewlweb site.com/apps/frontend/public/

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

api.mykewwebsite.com:路径/to/mykewlwebsite.com/apps/api/public/

这里有几个选项:

1) 创建子文件夹-将它们放在controllers目录(application/controllers/admin/products.php)中名为admin的文件夹中

这里有一个警告,你只能深入一个文件夹,否则代码点火器会被打乱。此外,它将首先使用一级控制器/方法,因此要小心命名冲突-例如,如果你有一个带有products方法的管理控制器,它将在管理目录中查找products控制器之前被调用。(当转到example.com/admin/products时)

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

控制器名称:admin_products.php

路由文件:

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

3) USE A MASTER CONTROLLER FOR ALL-最终选项是有一个单独的管理控制器,并在其中使用命名方法,因此例如,您有一个admin.php控制器,其中有一个products方法,然后由admin/products uri调用它(这可能会变得混乱,尽管在大型应用程序/站点中-不推荐)

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

最新更新