用户
 找回密码
 入住 CI 中国社区
搜索
查看: 13996|回复: 22
收起左侧

[HELP] CI框架中如何正确引用多个视图?

[复制链接]
发表于 2013-2-17 15:43:37 | 显示全部楼层 |阅读模式
最近在学习CI框架但是现在遇到一点小麻烦还请各位大侠赐教!
这个是综合的模板
HTML复制代码
<html>
<head>
    <title>我就是我张国荣</title>
</head>
<body>
    <div style="width:500px;border:1px solid red;height:100px">我是导航栏</div><br />
    <div style="width:500px;border:1px solid blue;height:300px">我是内容</div><br />
    <div style="width:500px;border:1px solid green;height:100px">我是页尾</div>
</body>
</html>
 
复制代码

最后我想把这个分成四个模板看看ci究竟是怎么多个模板引用的
HTML复制代码
<html>
<head>
    <title>看看是怎么用的了</title>
</head>
<body>
   
</body>
</html>
复制代码

这个是header.php页面
下面的三个都是相同的
HTML复制代码
<div style="width:500px;border:1px solid blue;height:300px"><?php echo $content; ?></div>
复制代码

控制器里面的代码如下
PHP复制代码
<?php
class Blog extends CI_Controller{
    function __construct(){
    parent::__construct();
    }
 
    function index(){
    $data['content'] = '我就是我张国荣!';
    $this->load->view('header');
    $this->load->view('menu');
    $this->load->view('content',$data);
    $this->load->view('footer');
    }
   
    function comments(){
    echo "Oh mygod you are here!";
    }
}
?>
复制代码

最后结果却显示是这样的
应用中心截屏_2013-02-17T07-40-59.572Z.png

中间怎么会有换行那?



发表于 2017-5-26 08:28:29 | 显示全部楼层
本帖最后由 izengjing 于 2017-5-26 08:30 编辑

因为公共模板不会改变,只需要加载一次就可以,所以我把公共模板放在父类函数里面,而且,我也很希望这样处理数据。但是有个问题,公共模板里面的<title></title> 是需要变化的,我通过子模板引入的$data['title']只能在自己的代码段里面使用,公共模板不能使用这个数据,有大神能解决么???
public function __construct(){
        parent::__construct();
        $this->load->view('index/_meta.php');
        $this->load->view('index/_header.php');
        $this->load->view('index/_menu.php');
        $this->load->view('index/_footer.php');
    }
    public function index(){
        $data['title']="我是首页";
        $this->load->view('index/_content.php',$data);
    }
发表于 2016-7-11 15:51:36 | 显示全部楼层
baiyuxiong 发表于 2015-2-25 17:01
load view这种自己封装一个helper最方便了。

function lv($view,$data)

手册说分配多个视图的时候,给一个加就行,官网是这么写的:
<?php

class Page extends CI_Controller {

   function index()
   {
      $data['page_title'] = 'Your title';
      $this->load->view('header');
      $this->load->view('menu');
      $this->load->view('content', $data);
      $this->load->view('footer');
   }

}
?>
发表于 2017-5-26 10:19:05 | 显示全部楼层
izengjing 发表于 2017-5-26 08:28
因为公共模板不会改变,只需要加载一次就可以,所以我把公共模板放在父类函数里面,而且,我也很希望这样处 ...

你的问题最好的解决方案是 Layout,或者叫做模板继承,但是这需要 Smarty 或其他模板引擎或自己实现。
发表于 2013-2-17 15:52:16 | 显示全部楼层
css 问题吧
 楼主| 发表于 2013-2-17 15:54:43 | 显示全部楼层
css的问题?css是内嵌式的应该不是吧。我试试看看!谢谢
 楼主| 发表于 2013-2-17 15:55:05 | 显示全部楼层
我是新手 发表于 2013-2-17 15:52
css 问题吧

css的问题?css是内嵌式的应该不是吧。我试试看看!谢谢
发表于 2013-2-17 17:52:44 | 显示全部楼层
<br />的问题吧
发表于 2013-2-17 18:40:03 | 显示全部楼层
直接在视图里 $this->load->view('xxx');
 楼主| 发表于 2013-2-18 09:36:30 | 显示全部楼层
本帖最后由 Sdeep_wang 于 2013-2-18 09:46 编辑
Hex 发表于 2013-2-17 18:40
直接在视图里 $this->load->view('xxx');

我是按照CI中文手册做的,它可以引用多个视图现在的问题是每个视图中间怎么会有换行那?

CI.zip

440.11 KB, 下载次数: 65

源代码

 楼主| 发表于 2013-2-18 09:37:49 | 显示全部楼层
qichengzx 发表于 2013-2-17 17:52
的问题吧

多个视图引用的时候我把br去掉了!
发表于 2013-2-18 09:38:56 | 显示全部楼层
Sdeep_wang 发表于 2013-2-18 09:36
我是按照CI中文手册做的,它可以引用多个视图现在的问题是每个视图中间怎么会有换行那? ...

把代码打包发上来吧,换行也是你自己输入进去的,CI 不会给你加换行。
 楼主| 发表于 2013-2-18 09:48:24 | 显示全部楼层
Hex 发表于 2013-2-18 09:38
把代码打包发上来吧,换行也是你自己输入进去的,CI 不会给你加换行。

我把源码添加到了7楼!十分感谢管理员的帮助!

本版积分规则