3

CI新手,如果这是一个冒犯性的直接修复,请原谅。

我有许多视图需要能够包含相同的导航,如下所示:

...
<div class="projectNav">
  <?php 
    echo anchor('projects/view/' . $project->intId, '<img src="'.base_url().'assets/img/icons/zoom.png" />'); 
    echo anchor('tasks?project=' . $project->intId . '&status=open', '<img src="'.base_url().'assets/img/icons/puzzle.png" />');
    echo anchor('projects/edit/' . $project->intId, '<img src="'.base_url().'assets/img/icons/edit.png" />');
    echo anchor('projects/charges/' . $project->intId, '<img src="'.base_url().'assets/img/icons/sterling_pound_currency_sign.png" />');
  ?>
</div>
...

显然,由于它是每个观点的标准,我不想重复自己。在 CI 中“包含”这个导航的最佳实践方法是什么?

4

3 回答 3

9
$this->load->view('nav');

将在应用程序内的视图文件夹中加载 nav.php。此方法可以从控制器或视图运行。

于 2013-01-11T16:21:38.157 回答
2

你可以通过两种方式做到这一点(据我所知)

在控制器中(如果您包含在控制器中,您应该按照您希望的方式以相同的顺序加载。)

$this->load->view('nav')

在视图中

include('nav.php')
于 2013-01-11T16:26:55.483 回答
1

看起来您正在寻找模板/布局系统。CodeIgniter 的一种实现可以在http://daylerees.com/layout/找到。

如果你不想使用完整的布局引擎,你可以添加一个display_override钩子来操作你的视图。这在http://maestric.com/doc/php/codeigniter_compress_html有简要描述。

于 2013-01-11T16:32:15.240 回答