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。如果答案有用,請接受並投票。謝謝。 –