我搜索了整个互联网,要么没有人提到我的问题,要么我是愚蠢的,或者也许这只是编码的糟糕日子.
情况如何:
"登录"模型从autoload.php加载,然后在每个控制器的构造函数中我有$ this-> login-> check(),它检查用户是否已登录(显然).然后在一些方法中,我使用"源"模型连接到数据库.
我尝试从自动加载阵列中加载两个模型,我也尝试按照这里描述的方式加载它们,但它显然是一个旧的CI版本(该线程是从2008年开始),我尝试了所有可能的方法.心神.
无论如何,结果如下:
遇到PHP错误
严重性:注意
消息:未定义属性:Source :: $ login
文件名:controllers/source.php
行号:10
致命错误:在第10行的...\application\controllers\source.php中的非对象上调用成员函数check()
我缺少什么想法或如何修复它?我被困了几个小时,我没有任何想法,我能做什么......
编辑1:这是来自"源"控制器的代码:
class Source extends CI_Controller {
Run Code Online (Sandbox Code Playgroud)class Source extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('login'); $this->login->check(); } function index() { // Pagination config, getting records from DB $this->load->view('templates/layout', $data); } function add() { $this->load->model('source', '', true); $btn = $this->input->post('btn'); if(isset($btn)) { // More form validation if($this->form_validation->run() == TRUE) { if($btn == "Add") { // here I am supposed to use the source model... } } } $data['page'] = 'source_add'; $this->load->view('templates/layout', $data); } } ?>}
?>
编辑2:login.php:
class Login扩展CI_Model {
Run Code Online (Sandbox Code Playgroud)<?php class Login extends CI_Model { function __construct() { parent::__construct(); } function authenticate($username, $password) { // the login script comes here } function logged() { if($this->session->userdata('logged') == true) { return true; } else return false; } function check() { if(!$this->logged()) { redirect('/authentication'); } } } ?>}
?>
通常,Models的类名应以_model结尾,因此它不会与具有相同名称的控制器发生冲突,因此请尝试更改
class Login extends CI_Model {
Run Code Online (Sandbox Code Playgroud)
至
class Login_model extends CI_Model {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8079 次 |
| 最近记录: |