0

我已经创建了一个Web应用程序与Codeigniter,我有一个在url,控制器和结构级别的问题。Codeigniter 3 url路由与独立控制器

我有以下网络结构。

http://projectroot/admin 

然后,我有几个部分,如:

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

我与会话和其他图书馆

目前我有称为管理单个控制器一切工作,但我想创建将调用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 

创建独立的管理员扩展类(用户配置文件,section_tracking和section_products)作为独立控制器之外的管理员,具有类似于此的结构:

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本地。

谢谢

回答

0

在您的应用程序/控制器/ 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 controller.so使Admin_controller.php扩展CI_Controllerapplication/core。你的`Admin'控制器必须是这样的......

class Admin_controller extends CI_Controller 
{ 

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

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

+0

我可以访问个人资料只有当我把: HTTP:// projectroot/profile文件 但我希望它是这样工作的: HTTP:// projectroot /管理/配置文件 在路线我: $ route ['default_controller'] ='admin'; $ route ['admin'] =“admin”; $ route ['(:any)'] ='admin/$ 1'; – Sylar

+0

太好了,非常感谢,我可以解决它,有必要配置文件routes.php,我只是这样写: $ route ['(:any)'] ='admin/$ 1'; – Sylar

+0

祝贺并享受codeigniter。如果答案有用,请接受并投票。谢谢。 –