所以我正在玩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代码。
答案 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
。