使用控制器中模型的变量 - CodeIgniter

时间:2013-11-25 10:52:28

标签: php codeigniter

所以我正在玩CodeIgniter一点。现在我正在尝试构建一个“页面概述”页面。我有另一个页面,我可以创建页面,我想在概述中显示这些页面。

现在我的模特我得到了以下内容:

public function page_list(){
    $query = $this->db->get('pages');

    if ($query){
        $pageListing = "<table class='table table-striped'>";
        foreach ($query->result() as $row){
            $pageListing .= "<tr>";
            $pageListing .= "<td>".$row->title."</td>";
            $pageListing .= "<td>".$row->category."</td>";
            $pageListing .= "<td>".$row->date."</td>";
            $pageListing .= "<td><a href='delete_page/".$row->id."'>delete</a></td>";
            $pageListing .= "<td><a href='edit_page/".$row->id."'>edit</a></td>";
            $pageListing .= "</tr>";
        }
        $pageListing .= "</table>";
    } else {

        $pageListing = "There are no pages to display";
    }
}

我知道这不是最好的方法。我显然正在编写属于模型视图的html代码。现在我不打扰那个。我只想弄清楚如何在我的控制器中使用变量$pageListing,并从那里加载到视图中。

我尝试按以下方式使用变量:

public function displayPages {
    $this->load->model('model_pages');
    $this->model_pages->page_list();
    echo $this->model_pages->pageListing;
}

当我能成功完成此操作时,我可以在我的视图中使用$pageListing

现在我收到以下错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Main::$pageListing
Filename: core/Model.php
Line Number: 51

正如我之前所说,我知道这不是最好的做法,在模型中编码html,并从控制器回显它。这对于实验来说是纯粹的,我只是好奇我如何才能做到这一点。因为我将来必须使用模型中的其他变量,并且它将完全相同,除非它们不包含整个html代码。

1 个答案:

答案 0 :(得分:2)

$pageListing从模型返回到控制器。在模型函数的末尾添加此行:

return $pageListing;

修改

public function displayPages {
    $this->load->model('model_pages');
    echo $this->model_pages->page_list();
    //echo $this->model_pages->pageListing;
}

OR

public function displayPages {
    $this->load->model('model_pages');
    $data['pageList'] = $this->model_pages->page_list(); //assign to a variable
    $this->load->view('pagelist', $data);  //is a file pagelist.php in your views folder

}

现在,如果你在pagelist.php中采用第二种方式(正确方式),你将获得变量$pageList。然后在视图文件中只有echo $pageList