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


Using variables from the model in the controller - 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代码。

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

return $pageListing;

编辑:

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

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