CodeIgniter,头控制器没有加载索引方法

时间:2015-02-03 15:01:36

标签: php debugging codeigniter-2

首先我没有收到任何错误,我正在尝试在Code Igniter中的头模型中创建一个is_logged_in()方法,但控制器的索引方法中没有任何内容会加载。我添加了die();进入它甚至不会执行,这是我的代码:

header.php - controller

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

class Header extends CI_Controller {
    public function index() {
        print_r($this->session->all_userdata());
        $data = array();
        $data['title'] = 'Wenso - Timesheet';
        $username = $this->session->userdata('username');
        $this->load->view('template/header', $data);
        $this->load->model('header_model');
        $is_logged_in = $this->header_model->is_logged_in($username);
        die($is_logged_in);
    }
}

header_model.php - 模型

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

class Header_model extends CI_Model {
    public function is_logged_in($username){
        $q = $this
            ->db
            ->where('email_address', $username)
            ->limit(1)
            ->get('users');

        die($q->last_query());

        if($q->row('username') != $username){
            return FALSE;
        } else {
            return TRUE;
        }
    }
}

注意:我的代码中没有任何die()函数工作..我添加到控制器的索引函数中的任何东西(默认情况下加载到我的理解中)都没有执行...

提前致谢

3 个答案:

答案 0 :(得分:0)

  

public function __construct(){parent :: __ construct(); }

在您的模型中添加此方法,否则您将无法使用$ this-&gt; db loaded

答案 1 :(得分:0)

由于AdrienXL指出控制器只被加载,所以url / controller_name被调用..这不是我用户案例场景中的情况。

如果你在CodeIgniter中创建一个构造方法,你也可以指出Sevtilo上面提到的一些东西,你可以使用:

来编写dhisult调用诸如$ this-&gt; db class之类的东西。
public function __construct() {

    parent::__contsruct();

}

将获得父类contsructor。

此致 RIC

答案 2 :(得分:0)

如果你想透明地调用这个代码(即不必在uri中添加任何额外的混乱),那么将代码移动到应用程序/核心中名为MY_Controller.php的扩展的构造函数中,看起来有点像这样。

 class MY_Controller extends CI_Controller { 
    public function __construct() { 
       parent::__construct();
       print_r($this->session->all_userdata()); 
       $data = array(); $data['title'] = 'Wenso - Timesheet'; 
       $username = $this->session->userdata('username'); 
       $this->load->view('template/header', $data); 
       $this->load->model('header_model'); 
       $is_logged_in = $this->header_model->is_logged_in($username); 
       die($is_logged_in); 
       } 
  }

然后在你的应用程序/控制器文件中扩展这个类,如

class Some_controller extends MY_Controller{
      function __construct (){
             parent::__construct();
      }

      public function index(){
           //your header code will be run before this or any other method in this class
      }

}

MY_Controller.php中的代码将在您的任何方法之前运行。