Codeigniter MVC。从一个视图的摘要信息到另一个视图中的详细信息

时间:2014-02-13 17:41:45

标签: php codeigniter

好的,所以我有视图提供有关用户条目的摘要信息。用户可以为不同的“程序”(类别或多或少的类别)和不同的“供应商”等创建条目。因此,程序视图将显示每个程序的一些摘要信息以及每个程序具有的条目数。供应商视图将显示有关每个供应商的摘要信息以及每个供应商存在的条目数。

如何编写用户可以单击以将其带到该程序或供应商的条目视图的按钮。我感到困惑,因为我不认为你应该从视图访问控制器,但我希望用户能够以不同的方式查看摘要信息,然后单击以获取详细数据。

所以程序视图可能如下所示: 页面标题:所有程序

计划:计划1 开课日期:2013年5月5日 结束日期:2014年5月5日 按钮:|单击以查看条目|

计划:计划2 开课日期:2013年1月1日 结束日期:2014年2月15日 按钮:|单击以查看条目|

我真正想做的是调用我创建的模型,该模型接受一个充当过滤器的数组。从控制器调用时它很好用,但我认为我不能这样做:

public function get_entries($filter, $option = false)
{
$this->db->where($filter);
$this->db->from('item i');
$this->db->join('program p', 'p.Id=i.program_Id');
$this->db->join('vendor v', 'v.Id=i.vendor_Id');
$this->db->join('item_type it', 'it.Id=i.item_type_Id');
$this->db->join('item_type_category itc', 'itc.item_type_Id=it.Id');
$this->db->join('category c', 'c.Id=itc.category_Id');
$this->db->select('i.*, p.programName, v.VENDNM, it.name, c.catName');
$this->db->select('(SELECT FORMAT(i.cost, "c")) AS cost', FALSE);
$query = $this->db->get();
$result = $query->result_array();
if ($option === false){
return $result;
}
elseif ($option === "count"){
return count($result);
}
}

1 个答案:

答案 0 :(得分:0)

这很简单 - 只需使用包含确定要搜索范围的字段的表单。您在表单上使用的地址将首先转到您的控制器 - 然后是方法。如果您的控制器是“报告”和方法“搜索”,则使用Codeigniters形成帮助:

 echo form_open('reports/search');

然后在“报告”控制器中使用名为“搜索”的方法

Verify the Form Using the Form Validation class.
ALWAYS verify user input even if you are just using drop down menus. 

If the form does not verify 
  show the form view again with an error message

Else
  do the search with the values provided by the form. 
  Typically doing this search and passing back the results 
  (or False for no results) will happen in the Model

If there are no database results 
   show the form view again with a no results message

Else if there are results
   pass results to a view page which will display them. 

表格助手 http://ellislab.com/codeigniter/user-guide/helpers/form_helper.html

表单验证 http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

并查看本教程 - 将向您展示您需要的许多基本代码模式 - http://ellislab.com/codeigniter/user-guide/tutorial/index.html