Separate Admin and Front in codeigniter

后端 未结 3 1714
予麋鹿
予麋鹿 2020-12-02 19:11

What is the best way to separate admin and front-end for a website in codeigniter where as I was to use all libraries, models, helpers etc. in common, but only controllers a

相关标签:
3条回答
  • 2020-12-02 19:36

    I highly suggest reading the methods outlined in this article by CI dev Phil Sturgeon:

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

    My advice: Use modules for organizing your project.

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

    Create a base controller for the front and/or backend. Something like this:

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

    Back end controllers will extend Admin_Controller, and front end controllers will extend Public_Controller. The front end base controller is not really necessary, but there as an example, and can be useful. You can extend MY_Controller instead if you want.

    Use URI routing where needed, and create separate controllers for your front end and back end. All helpers, classes, models etc. can be shared if both the front and back end controllers live in the same application.

    0 讨论(0)
  • 2020-12-02 20:01

    I use a very simple approach: file folders. Check out the CI User Guide section, Organizing Your Controllers into Sub-folders.

    I have my public-facing website built as any other would be built with CodeIgniter. Then I have two additional folders, controllers/admin and views/admin.

    The admin controllers are accessed via http://[hostname]/admin/controller, and behave just as any other controller except they have specific authentication checks. Likewise, the views are simply called with the folder name included: $this->load->view('admin/theview');.

    I haven't found a reason to do anything more complicated than that.

    0 讨论(0)
  • 2020-12-02 20:01

    You all can find complete solution over here, https://github.com/bhuban/modular

    Module separation for admin and front-end using HMVC and template separation using template libraries

    I am using two third party libraries, you can find it in zip file.

    1. HMVC for modular developed by wiredesignz
    2. Template engine for templating by Phil Sturgeon

    Just unzip it into your webserver root directory and run

    localhost/modular for front-end
    

    and

    localhost/modular/admin for back-end
    

    application/back-modules, it is for the back-end modules

    application/front-modules, it is for the front-end modules

    similarly templates/admin for the back-end templates templates/front for the front-end templates

    themes/admin for the back-end themes themes/front for the front-end themes

    Nothing hacked in original code just configured using config.php and index.php

    0 讨论(0)
提交回复
热议问题