问题:我似乎无法从视图中调用控制器方法。 原因:因为我想在方法中传递参数并循环数据
在视图中:
foreach($data as $key => $val){
foreach($methodData($val['dataID']) as $mKey => $mVal){
echo $mVal['name'];
}
}
答案 0 :(得分:0)
这不是MVC模式中的推荐。您应该只在视图中显示数据(从控制器传递的数据)。
考虑一下,在控制器中根据需要设置数据,并将正确的模型传递给您的视图。
答案 1 :(得分:0)
假设有一个名为“丛林”的模型。在模型中,我们使用搜索词搜索大象。如果没有大象回来,我们加载一个搜索表单并将搜索词传回给它。
控制器中的
// check first if no results came back from the model
if( ! $data['elephants'] = $this->jungle->getElephants($searchterm) ){
$data['searchterm'] = $searchterm ;
$this->load->view( 'searchform_elephants', $data ); }
// we have results, $elephants data structure is assigned to $data
// and passed to the view so it can be accessed on the view page
else { $this->load->view( 'show_elephants', $data ); }
如果一些大象回来了,那么$ elephant对象(或数组)被分配给$ data,然后它被传递给视图。
然后在您的视图中 - 您可以根据数据结构的类型预测结果。
foreach($elephants as $index => $elephant) :
echo $elephant->firstname . ' ' . $elephant->lastname ;
最后 - 如果您知道从数据库等中检索的内容是单个记录 - 那么您可以将查询结果分配给row()。那么在视图中你不需要做foreach等。例如,如果你通过$ id获得一个独特的雪花
// controller
$data['snowflake'] = $this->blizzard->getFlakeBy($id) ;
// view
echo $snowflake->firstname ;
deets的这个页面:https://ellislab.com/codeigniter/user-guide/database/results.html