首先我没有收到任何错误,我正在尝试在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()函数工作..我添加到控制器的索引函数中的任何东西(默认情况下加载到我的理解中)都没有执行...
提前致谢
答案 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中的代码将在您的任何方法之前运行。