首页 文章

在codeigniter中获取错误

提问于
浏览
3

我在我的codeigniter应用程序中自动加载了一个名为'render'的库 . 该库的完整代码是:

class Render extends CI_Controller {
    public function template($template, $view, $extra_css, $extra_js) {
        $data = array();
        if (isset($view)) {
            $data['view'] = $view;
        }
        if (isset($extra_css)) {
            $data['extra_css'] = $extra_css;
        }
        if (isset($extra_js)) {
            $data['extra_js'] = $extra_js;
        }
        $template = $this->load->view("templates/$template", $data, TRUE);
        echo $template;
    }

}

这个库工作正常但问题是每当我手动加载这个库或通过编辑自动加载文件时,我在我的任何控制器中加载任何模型时都会出错 .

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Home::$my_model_name

Filename: controllers/home.php

Line Number: 11

这里第10行和第11行是:

$this->load->model('my_model_name');
$this->my_model_name->my_model_method();

我也尝试使用:

$this->load->model('my_model_name', 'My_model');
$this->My_model->my_model_method();

我的控制器“家”代码是:

class Home extends CI_Controller {
    function __construct() {
        parent::__construct();
    }
    public function index()
    {
        $this->load->model('my_model_name');
        $this->my_model_name->index();
    }
}

我试图将__construct()方法添加到我的库中,但仍然没有运气 .

1 回答

  • 6

    通过做

    class Render extends CI_Controller
    

    你不是在创建一个库,而是一个控制器!要创建库,只需创建类并将其放入库文件夹即可 .

    在您的库中,如果您想使用CI的加载器来加载模型,例如,您需要实例化主CI类 .

    $CI = & get_instance();
    

    像(文件 application/libraries/render.php ):

    class Render {
    
          var $CI;
    
          function __construct()
          {
            $this->CI = &get_instance();
          }
    
           public function template($template, $view, $extra_css, $extra_js) {
            $data = array();
            if (isset($view)) {
                $data['view'] = $view;
            }
            if (isset($extra_css)) {
                $data['extra_css'] = $extra_css;
            }
            if (isset($extra_js)) {
                $data['extra_js'] = $extra_js;
            }
            $template = $this->CI->load->view("templates/$template", $data, TRUE);
            return $template;
        }
    }
    

    然后你可以在你的图书馆,模特,其他图书馆等所有你想要的东西 .
    有关详细说明,请参见Utilize CI resource within your library . 你用通常的方式调用你的图书馆, $this->load->library('render') 然后 $this->render->whatever();

相关问题