带有独立控制器的 Codeigniter 3 url 路由

Codeigniter 3 url route with independent controllers

我使用 Codeigniter 创建了一个 Web 应用程序,但我在 url、控制器和结构级别遇到了问题。

我的网站结构如下。

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 将 类(用户、个人资料、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 本机。

谢谢

在您的 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...

这里您想通过扩展 application/core 中的 CI_Controller 来扩展 admin controller.so 使 Admin_controller.php。您的“管理员”控制器必须是这样的....

class Admin_controller extends CI_Controller
{

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

然后总是扩展Admin_controllerCI_Controller自动扩展。