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

时间:2012-08-27 17:37:15

标签: codeigniter codeigniter-2

我用控制器创建了我的网站,例如about,products等...这给了我example.com/about/等..

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

如何整理控制器?

2 个答案:

答案 0 :(得分:5)

另外两个选项可以补充 WebweaverD 回答。

  1. 使用Modular Separation
  2. 创建第二个应用程序文件夹和索引文件,它将负责管理员,将它们连接到同一个系统文件夹。
  3. 设置后,第二个选项非常容易管理。有变化,但我发现下面的结构是最方便的。

    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 1}}

    公共文件夹中的

    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设置(I我相信你们中的大多数人都与当地人不同。

    添加一个应用程序很简单 - 只需复制一个现有应用程序。您可以根据需要添加任意数量的应用程序 - api,ajax,用户机柜等。

    <强> CONS

    如果您的域名为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 /

答案 1 :(得分:4)

你有几个选择:

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

这里警告的一句话就是你只能去一个文件夹或者codeigniter会感到沮丧。此外,它将首先使用第一级控制器/方法,因此请注意命名冲突 - 例如,如果您有一个带有产品方法的管理控制器,那么在查看产品控制器的管理目录之前将调用它。 (当访问example.com/admin/products时)

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

控制器名称:admin_products.php

路线档案:

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

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

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