0

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

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

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

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

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

我一直在玩弄创建一个单独的方法来处理这个问题(将 $data 作为参数传递并让该方法到视图加载)或在类中初始化 $data 数组并仅使用 $this- 更改内容的想法>。我想对此发表一些专业意见。我的思维方式是否正确?

4

1 回答 1

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);
}

然后在您的视图文件中使用包含来添加标题等。

(示例视图/forms/login.php)

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

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

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

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

于 2013-01-26T10:34:41.097 回答