Codeigniter - 使用多个控制器

时间:2013-06-30 08:05:58

标签: php codeigniter controller routes uri

我有一个关于控制器的问题。让我们开始吧:

  • 我有一个名为“admin.php”的主控制器,它有一个公司菜单,用户管理等。菜单上的每个项目都有单独的PHP文件来保存不同种类的数据[我似乎很长时间将它们组合起来所有在一个PHP。

所以对于这个例子:

我有3个控制器:admin.php,company.php,usermanagement.php

我想要的是,将公司和管理控制器链接为管理员的孩子。因此,如果在浏览器上输入地址,它可能会显示:localhost / admin / company和localhost / admin / usermanagement

我配置了路线并且它很好但是当我输入“localhost / company”时它会加载我不想要的公司页面。我想将它们全部链接为管理页面的子项。

我将如何实现这一目标?

顺便说一句,这是我的代码片段:

admin.php - 控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Admin extends CI_Controller {

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

        session_start();
    }

    public function index() {
          $this->load->view('view_admin');
       }
}

公司 - 与管理员相同

  <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Company extends CI_Controller {

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

            session_start();
        }

        public function index() {
              $this->load->view('view_company');
           }
    }

谢谢, 詹姆斯

编辑:我尝试在admin.php上添加功能,如:

function company(){} function usermanagement(){}

但是我觉得它不是那么有效,因为当我尝试将我的原生php代码迁移到这个MVC架构框架中时,它将包含许多函数。

2 个答案:

答案 0 :(得分:2)

如果您的问题是您喜欢路线的工作方式但不希望人们能够访问index.php / company /而宁愿他们访问admin / company,您可以随时这样做:

class Company extends CI_Controller {
    public function __construct() {
        parent::__construct();
        if ( $this->uri->segment(1) != "admin" ) {
            redirect('admin/company/'.$this->uri->segment(3));
        }
    }

...

虽然请记住,您可能需要一个更完整的URL形成方法,而不仅仅是添加$this->uri->segment(3),但一般模式就在那里。

答案 1 :(得分:0)

您可以在“admin”控制器中添加更多功能,因此,默认页面为:

 public function index() {
              $this->load->view('view_admin');
           }

'子页面'是:

 public function company() {
              $this->load->view('view_company');
           }

等等...