我在我的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();
我的控制器“home”代码是:
class Home extends CI_Controller { function __construct() { parent::__construct(); } public function index() { $this->load->model('my_model_name'); $this->my_model_name->index(); } }
我试图将__construct()方法添加到我的库中,但仍然没有运气.
解决方法:
通过做
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;
}
}
然后你可以$CI->在你的库,模型,其他库中加载你想要的所有东西.
有关详细说明,请参见Utilize CI resource within your library.你用通常的方式调用你的库,$this-> load-> library(‘render’)然后$this-> render-> whatever();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。