Codeigniter重复视图加载器

时间:2013-01-26 10:14:04

标签: codeigniter repeat

我注意到在处理Codeigniter控制器时,我似乎得到了很多重复的代码。更确切地说,每当我加载视图时。所以假设我有一个名为login的控制器,它有以下索引方法:

$data['title'] = 'Login';
$data['main_content'] = 'forms/login';
$this->load->view('frontpage', $data);

然后我有一个带有以下索引方法的FrontPage控制器:

$data['title'] = 'Welcome';
$data['main_content'] = 'content/welcome';
$this->load->view('frontpage', $data);

几乎唯一改变的是$ data内部,我想知道是否有某种方法可以使这些更通用的代码,所以任何代码重复都将被消除。

我一直在想要创建一个单独的方法来处理这个问题(将$ data作为参数传递并让方法进行视图加载)或者在类之前初始化$ data数组并且只是更改内容$这 - 取代。我想对此有一些专业意见。我是否按照自己的思维方式走上正轨?

1 个答案:

答案 0 :(得分:0)

我建议每个“视图”都有单独的视图。这种方法既简化了控制器,又消除了视图文件中(杂乱)逻辑的需要:

public function index()
{
  $data['title'] = 'Welcome';
  $this->load->view('content/welcome', $data);
}

public function login()
{
  $data['title'] = 'Login';
  $this->load->view('forms/login', $data);
}

然后在视图文件中使用includes来添加标题等。

(示例views / forms / login.php)

<?php include(APPPATH.'/views/includes/header.php'); ?>

<!--login form ....  -->

<?php include(APPPATH.'/views/includes/footer.php'); ?>

(注意:视图中不需要逻辑:if ($main_content == 'forms/login'):等等......)