我有MY_Controller一个家长班。它只加载视图,将一些数据传递给它们。我的应用程序是一个简单的网站,几乎没有扩展控制器MY_Controller,它只是设置一些包含需要传递给视图的信息的变量。
我有一个控制器,它与其他控制器略有不同。它需要将更多信息传递给从数据库中获取的视图。在这种情况下我该怎么办?
正如我所看到的,我可以覆盖该控制器中的整个索引函数,但这违反了 DRY 规则,因为唯一的区别是为传递给每个视图的数组设置了更多的值。或者我可以在父控制器中多写几个 LOC,但我想这不是一个好习惯,因为特定的子控制器是唯一需要该代码的控制器。
我已经为此苦苦挣扎了一段时间,如果您能指出正确的方向,或者给我一些如何正确执行此操作的建议,我会很高兴。
我的控制器:
MY_Controller 类扩展 CI_Controller
{
$样式='',
$contents = 数组(),
$title=''; //等等
公共函数索引()
{
$data['style'] = $this->style;
$data['title'] = $this->title;
$this->load->view('header',$data);
foreach($this->contents as $row)
{
$this->load->view($row,$data);
}
$this->load->view('footer',$data);
}
}
画廊控制器到目前为止
类 Gallery 扩展 MY_Controller
{
$style = 'galeria.css',
$title = '画廊',
$contents = array('content_gallery');
// 如果 $gallery 为 null,则仅显示列表中的所有画廊,
//else 在该列表下方显示所选画廊及其内容
公共函数索引($gallery = NULL)
{
$data['画廊'] = $this->gallery_model->get_all_active_galleries(); //名称和ID
如果($画廊!= NULL)
{
$data['name'] = ...
$data['描述'] = ...
ETC...
}
}
}