所以我在玩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
。