2

我正在尝试在我的应用程序中包含一个标头。我创建了一个控制器site并在其中定义了一个函数header,它将数据变量呈现为views/header.php

但是,当我尝试访问myUrl/site/header所有变量时工作正常,但是当我在站点控制器中创建另一个函数index并包含views/header在其中时,我运行site/index然后我在标题中得到未定义的变量通知。

任何的想法??

class site extends CI_Controller { function header() {

$data =array('name'=>'foo');

$this->load->view('includes/header',$data); }

function index() {

$this->load->view('includes/index'); } }

INDEX.PHP

$this->load->view('includes/header');

4

3 回答 3

2

如果您想保留 Html 页面的单独段(例如页眉、页脚、导航栏等)以分隔视图文件,我认为最好通过以下方式执行此操作

将您想要成为标题的内容保存到文件名 header.php(或您喜欢的任何其他内容)到视图文件夹中。假设,header.php 的内容是

<html>
    <head>
        <title>This is title</title>
    </head>
    <body>

另一个名为 footer.php 的文件包含以下内容

</body>
</html>

视图文件夹中的另一个文件 my_view.php 将保存该页面的内容。样本内容是

<?php $this->load->view('header');?>
<h1>Welcome</h1>
<p>Main contents here</p>
<?php $this->load->view('footer');?>

现在,如果您从控制器函数加载 my_view,整个 HTML 页面将被渲染。

function my_controller_function(){
    $this->load->view('my_view');
}
于 2012-06-06T10:48:27.890 回答
0

这不是正确的做法。基本上我像 Rafiqunnabi 那样做,除了我不在视图中加载视图。

例如:

 public function index()
{
  $this->load->view('include/header');
  $this->load->view('home');
  $this->load->view('include/footer');
}
于 2012-06-06T11:49:55.753 回答
0

解决了!!!!

编写了一个新的助手并从那里返回数据,然后使用 load->view('includes/header',$data); 将数据传递给查看

于 2012-06-06T12:39:36.187 回答