我想在辅助文件中编写一个用于加载下拉列表的函数,因此我想在Helper文件中使用我的模型。
当我使用它时,它会给我错误:
$this->load->model("news_model");
错误:
Fatal error: Using $this when not in object context in C:\xampp\test\application\helpers\component_helper.php on line 6
我的方法:
function dropdown($Class,$Attribute)
{
$Output=NULL;
$ClassName=$Class."_model";
$this->load->model($ClassName);
$FullData=$ClassName->get();
foreach ($FullData as $Data)
{
$Output.='<option value="'.$Data->Id.'">'.$Data->$Attribute.'</option>';
}
return $Output;
}
由于
答案 0 :(得分:6)
查看这篇文章:
function my_helper()
{
// Get a reference to the controller object
//$CI = get_instance();
// use this below
$CI = &get_instance();
// You may need to load the model if it hasn't been pre-loaded
$CI->load->model('my_model');
// Call a function of the model
$CI->my_model->do_something();
}
答案 1 :(得分:3)
辅助函数是函数。这意味着它们不受对象或类的约束。 $this
因此无法使用!
你必须从其他地方获得CodeIgniter-Core的实例!
CodeIgniter为此提供get_instance();
函数:
$CI = get_instance();
现在我们有$this->load
等等。
将$this
替换为$CI
以调用CodeIgniter Core!
顺便说一下你打电话给模特错了。您必须通过CI核心访问它:
$CI->$Classname->get();
答案 2 :(得分:0)
以下是对代码的更正:
function dropdown($Class,$Attribute)
{
$CI = get_instance();
$Output=NULL;
$ClassName=$Class."_model";
$CI->load->model($ClassName);
$FullData=$ClassName->get();
foreach ($FullData as $Data)
{
$Output.='<option value="'.$Data->Id.'">'.$Data->$Attribute.'</option>';
}
return $Output;
}
现在不使用$ this,而是在此方法中使用$ CI。
希望这有帮助。