【问题标题】:unable to load second controller无法加载第二个控制器
【发布时间】:2016-05-30 09:59:17
【问题描述】:

在 codeIgniter 中,我创建了从 url 中删除控制器/方法名的路由,但问题是当我尝试访问第二个控制器索引方法时,它没有加载它正在加载主控制器

当我输入 localhost/foldername/ 时我有 2 个控制器 Home.php 和 Admin.php谁能帮我写路线。

这是我创建的路线

$route['default_controller'] = 'home';
$route['([^/]+)/?'] = 'home/page/$1'; //If I comment this it is working properly for me 

管理控制器 Admin.php

class admin extends CI_Controller {

    public function index() {
        if($this->session->userdata('is_logged_in') == true) {
            $this->load->view('admin/dashboard');
        } else {
            $this->load->view('admin/login');
        }
    }
}

主控制器 Home.php

class home extends CI_Controller {      
          public function index() {
              $front_page         = $this->get_data->front_page();
              $page_data            = $this->get_data->AllData('pages', $front_page);
              $data['title']        = $page_data->row()->pagetitle;
              $class                = explode("/", $page_data->row()->template);
              $data['body_class'] = $class[1];

              $this->load->view('includes/header.php', $data);

              if($class[1] == 'home') {
                  $this->load->view('templates/slider');
              }

              $this->load->view('templates/navigation.php');

              $page_content = $page_data->row()->template;
              $this->load->view($page_content, $data);
              $this->load->view('templates/footer-form.php');
              $this->load->view('includes/footer.php');
        }
        public function page($id) {
              $page_data = $this->get_data->AllData('pages', $id);
              $data['title'] = $page_data->row()->pagetitle;
              $class = explode("/", $page_data->row()->template);
              $data['body_class'] = $class[1];

              $this->load->view('includes/header.php', $data);

              if($class[1] == 'home') {
                  $this->load->view('templates/slider');
              }

              $this->load->view('templates/navigation.php');

              if($class[1] == 'home') {
                  $data['slider'] = 'templates/slider';
              }

              $data['content'] = $page_data->row()->template;
              $this->load->view('index', $data);
              $this->load->view('templates/footer-form.php');
              $this->load->view('includes/footer.php');
          }
    }

现在任何人都可以帮我解决这个问题,当我评论自定义路由时,它工作得很好,但是我试图删除方法和控制器名称的页面的主控制器是因为找不到 404

【问题讨论】:

  • 您在此路线中显示的页面功能在哪里$route['([^/]+)/?'] = 'home/page/$1';
  • 我相信你没有注意到我的 Home.php 控制器
  • 请检查我的家庭控制器和第二种方法
  • 将您的路线替换到此$route['(.*)'] = 'home/page/$1';
  • $route['([^/home]+)/?'] = 'home/page/$1';如果在 root 之后的 url 中有主页,这将重定向到所有主控制器操作,否则它将继续将任何 url 重定向到您的页面操作

标签: php codeigniter


【解决方案1】:

据我了解,设置你的默认控制器,首先检查你的身份验证:

$route['default_controller'] = 'admin'; 
//so that you can check weather the user is logged in or not.

访问第二个控制器的索引函数:

$route['Home']  = "home";

访问第二个控制器的页面($id) 函数:

$route['Home/Page/(:num)']  = "home/page/$1";
// where num id the ID you will be passing to the page function.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2023-03-20
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多