1

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

  • 我有一个名为“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 上添加功能,例如:

函数公司(){}函数用户管理(){}

但我想它并没有那么有效,因为稍后当我尝试将我的原生 php 代码迁移到这个 MVC 架构框架中时,它会包含很多功能。

4

2 回答 2

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)但一般模式就在那里。

于 2013-06-30T08:27:41.120 回答
0

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

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

“子页面”是:

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

等等等等……

于 2013-06-30T08:14:18.697 回答