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

在CodeIgniter 2.0中创建管理部分控制器和视图,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我已经创建了我的网站与控制器,如约,产品等。。。这给了我example.com/about/等 如何创建具有相同控制器名称的管理部分,如example.com/admin/about或example.com/admin/products 如何组织我的控制器?这里有几个选项: 1) 创建子文件夹-将它们放在controllers目录下名为admin的文件夹中(在application/contollers/admin/products.php中) 这里有一个警告,您只能进入一个文件夹,否则code

我已经创建了我的网站与控制器,如约,产品等。。。这给了我example.com/about/等

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


如何组织我的控制器?

这里有几个选项:

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

这里有一个警告,您只能进入一个文件夹,否则codeigniter会感到不安。此外,它将首先使用第一级控制器/方法,因此要小心命名冲突-例如,如果您有一个包含products方法的admin控制器,那么在它在admin目录中查找products控制器之前,它将被调用。(访问example.com/admin/products时)

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

控制器名称:admin_products.php

路由文件:

$route['admin/products'] = "admin_products";
3) 对所有人使用主控制器-最后一个选项是使用一个管理控制器,并在其中使用命名方法,因此,例如,您有一个admin.php控制器,其中包含一个products方法,然后由admin/products uri调用(在大型应用程序/站点中,这可能会变得很混乱-不推荐)


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

2更多选项来恭维webweaver回答

  • 使用
  • 创建第二个应用程序文件夹和索引文件,负责管理,将它们连接到同一个系统文件夹
  • 第二个选项一旦设置好就很容易管理。虽然有各种不同,但我发现下面的结构是最方便的

    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_添加一次('../../../../../config/database.php');
    config/database.php

    index.php公用文件夹中的文件有两个重要变量
    $system\u path
    $application\u folder
    ,请将它们更改为

    $system_path = '../../../system/codeigniter';
    $application_folder = '../app';
    
    constants.php文件可以包含一些常量,如
    index.php
    文件中的
    环境
    常量和其他一些常量。只需
    require_once()
    就可以从
    index.php
    文件中获取它

    虽然有正反两面

    专业人士

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

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

    缺点

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

    mykewlwebsite.com:path/to/mykewlwebsite.com/apps/frontend/public/

    admin.mykewlwebsite.com:path/to/mykewlwebsite.com/apps/backend/public/


    api.mykewlwebsite.com:path/to/mykewlwebsite.com/apps/api/public/

    模块化分离在我身上是一个新概念,因此我无法对此发表评论,但建议2对于大型应用程序来说是一个非常好的方法(我应该想到的)-它将使管理端完全分离,您可以让所有危险的数据库查询远离用户(至少在任何方法中,您都应该使用单独的模型)。是的,我自己总是使用第二个模型,如果需要在两个应用程序之间共享某些模型,您可以通过两种方式来实现-
    require\u once()
    第三方软件包
    所以只需添加另一个名为Application_2的文件夹?是否有关于如何执行此操作的指南?无需指南。我将立即更新我的答案,以获得有关如何执行此操作的更多信息原来我的答案实际上是一个指南:)