Codeigniter 3 url路由与独立控制器

时间:2016-12-15 17:00:50

标签: codeigniter model-view-controller controller routes codeigniter-3

我已经使用Codeigniter创建了一个Web应用程序,我在网址,控制器和结构级别上遇到了问题。

我有以下网络结构。

http://projectroot/admin

然后我有几个部分,如:

http://projectroot/admin/users
http://projectroot/admin/profile
http://projectroot/admin/section_tracking
http://projectroot/admin/section_products
etc...

我正在使用会话和其他图书馆

目前我在一个名为Admin的控制器中拥有所有内容,但我想创建独立的控制器来调用url的每个部分。

在管理员中我有:

class Admin extends CI_Controller {
   public function __construct() {
      parent::__construct();
      $this->load->library('form_validation');
      $this->load->library('My_PHPMailer');
      $this->load->library('session');
   }
   public function index(){
      if($this->session->userdata('login')){
         if($this->session->userdata('urlnow')){
            $url = $this->session->userdata('urlnow');
            redirect($url);
         }else{
           redirect('admin/index');
         }
      }else{
         $data = array();
         $data['usererror'] = $this->session->flashdata('usererror');
         $data['passerror'] = $this->session->flashdata('passerror');
         $data['message'] = $this->session->flashdata('message');
         $this->load->view('admin/index', $data);
      }
   }
...
public function users() {
code....
}
public function profile() {
code....
}
public function section_tracking() {
code....
}
public function section_products() {
code....
}

我的想法是控制器文件夹包含这样的内容:

admin.php
users.php
profile.php
section_products.php
section_visits.php

创建独立的Admin扩展类(user,profile,section_tracking和section_products)作为admin之外的独立控制器,其结构类似于:

users.php
class Users extends Admin {
public function __construct() {
      parent::__construct();
      $this->load->library('form_validation');
      $this->load->library('My_PHPMailer');
      $this->load->library('session');
   }
   public function index(){
   code here...
  }
}

profile.php
class Profile extends Admin {
public function __construct() {
      parent::__construct();
      $this->load->library('form_validation');
      $this->load->library('My_PHPMailer');
      $this->load->library('session');
   }
   public function index(){
   code here...
  }
}

我该怎么办?我不想使用HMVC,我只想用MVC原生。

谢谢

1 个答案:

答案 0 :(得分:0)

在您的application / controllers / admin文件夹中......制作以下文件

Admin.php
Users.php
Profile.php
Section_products.php
Section_visits.php

然后调用这样的每个文件......

http://projectroot/admin/users
http://projectroot/admin/profile
http://projectroot/admin/section_tracking
http://projectroot/admin/section_products
etc...

在这里,您希望通过在admin中扩展Admin_controller.php来扩展CI_Controller controller.so make application/core。你的'管理员'控制器必须是这样的....

class Admin_controller extends CI_Controller
{

    function __construct()
    {
        parent::__construct();
    }
}

然后始终展开Admin_controllerCI_Controller自动延长。