繁体   English   中英

如何在Codeigniter中从视图使用控制器方法

[英]How to use controller method from view in Codeigniter

问题:我似乎无法从视图调用控制器方法。 为什么:因为我想在方法中传递参数并循环数据

鉴于:

foreach($data as $key => $val){
   foreach($methodData($val['dataID']) as $mKey => $mVal){
       echo $mVal['name'];
   }
}

在MVC模式中不建议这样做。 您只应在视图中显示数据(从控制器传递的数据)。

考虑一下,因此在控制器中根据需要设置数据,然后将正确的模型传递给视图。

可以说有一个名为“丛林”的模型。 在模型中,我们使用搜索词搜索大象。 如果没有大象回来,我们将加载搜索表格并将搜索字词传递回去。

在您的控制器中

  // 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 ; 

该页面的设计者: https ://ellislab.com/codeigniter/user-guide/database/results.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM