使用codeigniter在Helper文件中调用模型

时间:2013-12-06 12:13:21

标签: php codeigniter

我想在辅助文件中编写一个用于加载下拉列表的函数,因此我想在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;
}

由于

3 个答案:

答案 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();
}

https://stackoverflow.com/a/2479485/1570901

答案 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。

希望这有帮助。