我已经使用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原生。
谢谢
答案 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_controller
。CI_Controller
自动延长。