我有一个用mvc Codeigniter编写的网站。我希望在特定位置的视图中调用另一个视图,因为例如菜单在许多页面中重复,并且对所有页面都是相同的。
在我的控制器中,我写了这个:
public function home()
{
$data['menu_function'] = $this->load->view('backend/include/menu_function_view');
$data['menu'] = $this->load->view('backend/include/menu_view');
$this->load->view('backend/include/header_view_logged');
$this->load->view('backend/home_view',$data);
$this->load->view('backend/include/footer_view');
}
进入我的home_view
<?php
echo($menu_function);
?>
<div id="page">
<?php
echo($menu);
?>
<div id="content">
....
问题是$ menu中的内容是表单页面。我在firebug中看到过,html就像这样:
<div id="menu">
...
</div>
<div id="page">
...
</div>
而不是:
<div id="page">
<div id="menu">
...
</div>
</div>
我该如何解决?
答案 0 :(得分:1)
不知道这是否是最好的方法,但通常我用来创建加载视图的模板文件。这里有基本的想法:
在文件夹视图中我创建包含以下内容的文件template.php:
$this->load->view('includes/header');
$this->load->view( $main_content );
$this->load->view('includes/footer');
然后我创建文件夹视图/ include,其中包含:
档案header.php and footer.php
在控制器中我打电话:
$data['main_content'] = 'user/dashboard';
$this->load->view('template', $data);
编辑:菜单问题
如$ menu_config这样的数据传递到标题或视图模板。
的header.php
<html>
<head>
<title>$title</title>
</head>
<body>
<?php
if($menu_position == 'top1') {
$this->load->view($menu);
}
?>
在控制器上:
$data['main_content'] = 'user/dashboard';
$data['menu'] = 'top_menu';
$data['menu_position'] = 'top1';
$this->load->view('template', $data);