使用codeigniter php加载多个视图

时间:2016-01-15 04:07:14

标签: php codeigniter

我有4页视图,例如

layout/header.php,
layout/header_assets.php,
user/main.php,
layout/footer.php

我想加载这些多视图,所以我在控制器中使用了这段代码

$this->load->view('layout/header_assets');
    $this->load->view('user/main',$data);
    $this->load->view('layout/footer');

但我有一个问题:

<link rel="apple-touch-icon" href="http://localhost/game/assets/images/apple-touch-icon.png">
<html lang="en">

<head>
</head>

<body>
test
</body>
</html>
<footer>

</footer>

我想以正确的方式使用html代码,header_assets在head标签中加载,footer加载在body标签中。

但是现在如果我加载第一个header_assets而不是加载main.php。 所以header_assets首先加载到main.php之后

我想以这种方式

<html lang="en">

<head>
<link rel="apple-touch-icon" href="http://localhost/game/assets/images/apple-touch-icon.png">
</head>

<body>
test

<footer>

</footer>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

您可以在includes下创建一个文件夹view并创建一个页面template,并在页面template中添加以下代码 -

<?php $this->load->view('includes/header');
    $this->load->view($middle);
    $this->load->view('includes/footer');   
?>

在您的控制器中,您只需调用模板并传递数据,如下所示 -

$this->data['middle'] = 'public/existing_mem'; // view page to be included
 $this->load->view('includes/template',$this->data);

答案 1 :(得分:2)

对于你的问题

在控制器中

$this->load->view('layout/header_assets',$data); # Change
$this->load->view('user/main',$data);
$this->load->view('layout/footer');

最佳选择是

  

文件应包含3部分。

  1. 标题
  2. 页脚。
  3. 在标题中

      

    只包含

    1. 元标记
    2. 所有CSS和JS

      <html lang="en">    
      <head>
          <meta>....
          <link href="">....
          <script>....
      </head>
      
    3. 在正文

        

      这应该包含显示部分和所有代码的页面。这包含

      1. <body> tag start ....
      2. 所有其他代码
      3. 页脚

          

        这应包含

        1. 版权
        2. 移动顶部(需要身份证)
        3. </body>标记与</html>
        4. 关闭
            

          所以你可以通过

          加载这三个View in codeigniter
          $this->load->view('layout/header');
          $this->load->view('user/main',$data);
          $this->load->view('layout/footer')