【问题标题】:Separate Admin and Front in codeigniter在 codeigniter 中分离 Admin 和 Front
【发布时间】:2011-11-22 14:37:55
【问题描述】:

在 codeigniter 中分离网站的管理员和前端的最佳方法是什么,因为我要共同使用所有库、模型、帮助程序等,但只有控制器和视图是分开的。

我想要一种更合适的方法,提高性能、简单性以及共享模型和库等。

【问题讨论】:

    标签: codeigniter admin frontend


    【解决方案1】:

    我强烈建议阅读 CI 开发人员 Phil Sturgeon 在本文中概述的方法:

    http://philsturgeon.co.uk/blog/2009/07/Create-an-Admin-panel-with-CodeIgniter

    我的建议:使用模块来组织您的项目。

    https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

    为前端和/或后端创建一个base controller。像这样的:

    // core/MY_Controller.php
    /**
     * Base Controller
     * 
     */ 
    class MY_Controller extends CI_Controller {
                          // or MX_Controller if you use HMVC, linked above
        function __construct()
        {
            parent::__construct();
            // Load shared resources here or in autoload.php
        }
    }
    
    /**
     * Back end Controller
     * 
     */ 
    class Admin_Controller extends MY_Controller {
    
        function __construct()
        {
            parent::__construct();
            // Check login, load back end dependencies
        }
    }
    
    /**
     * Default Front-end Controller
     * 
     */ 
    class Public_Controller extends MY_Controller {
    
        function __construct()
        {
            parent::__construct();
            // Load any front-end only dependencies
        }
    }
    

    后端控制器将extend Admin_Controller,前端控制器将extend Public_Controller。前端基本控制器并不是真正需要的,但作为示例,它可能很有用。如果需要,您可以改为扩展 MY_Controller

    在需要时使用URI routing,并为您的前端和后端创建单独的控制器。如果前端和后端控制器都位于同一个应用程序中,则所有帮助器、类、模型等都可以共享。

    【讨论】:

    • 我发现这种方法非常有用,但我有一个问题,因为我不明白。为什么要创建 MY_Controller?有必要吗??如果 Admin_Controller 和 Public_Controller 扩展 CI_Controller 会怎样?这也是正确的吗??
    【解决方案2】:

    我使用一个非常简单的方法:文件夹。查看 CI 用户指南部分,Organizing Your Controllers into Sub-folders

    我的面向公众的网站与使用 CodeIgniter 构建的任何其他网站一样。然后我有两个额外的文件夹,controllers/adminviews/admin

    管理控制器通过 http://[hostname]/admin/controller 访问,除了具有特定的身份验证检查外,它们的行为与任何其他控制器一样。同样,只需使用包含文件夹名称的文件夹名称调用视图:$this->load->view('admin/theview');

    我还没有找到比这更复杂的事情的理由。

    【讨论】:

    【解决方案3】:

    你们都可以在这里找到完整的解决方案,https://github.com/bhuban/modular

    使用 HMVC 进行管理和前端的模块分离以及使用模板库进行模板分离

    我正在使用两个第三方库,你可以在 zip 文件中找到它。

    1. wiredesignz 开发的模块化 HMVC
    2. Phil Sturgeon 的模板引擎

    只需将其解压缩到您的网络服务器根目录并运行

    localhost/modular for front-end
    

    localhost/modular/admin for back-end
    

    application/back-modules,用于后端模块

    application/front-modules,用于前端模块

    类似地 templates/admin 用于后端模板 templates/front 用于前端模板

    themes/admin 用于后端主题 themes/front 前端主题

    使用 config.php 和 index.php 配置的原始代码没有被破解

    【讨论】:

    • 这正是我搜索到的!但是当我尝试访问它时,我遇到了一个错误:无法加载您的默认控制器。请确保您的 Routes.php 文件中指定的控制器有效。你有解决它的想法吗?谢谢
    • 能否请您回答上述问题,需要您的帮助“无法加载您的默认控制器。请确保您的 Routes.php 文件中指定的控制器有效。”
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多