zfm1988 发表于 2011-1-26 17:23:14

嵌套视图中参数传递问题

本帖最后由 zfm1988 于 2011-1-26 21:49 编辑

控制器 welcome.php
       function index()
{

$data['w']=123456;

$data['header']=$this->load->view('test','',TRUE);

$this->load->view('welcome_message',$data);

}



视图test.php
echo $w.“测试是否输出$w的值”;

视图welcome.php
echo $w.'<hr />';


在welcome 中输出
测试是否输出的值
123456

我就想问为什么$w在test。php中是null呢?我看手册也是这样写的啊

suxiaolu 发表于 2011-1-26 18:20:46

本帖最后由 suxiaolu 于 2011-1-26 18:29 编辑

你没有将$data['w'] = 123456;传递给test视图,我理解你的意思是


function index()
{
    $data['w'] = 123456;

    $data['header'] = $this->load->view('test', $data, TRUE);

    $this->load->view('welcome_message', $data);
}

zfm1988 发表于 2011-1-26 20:24:16

谢谢你,你这个做法我知道,但是我在手册上看到不需要把变量传递给没一个子视图,就像smarty里面的变量一样,可以在任何嵌套模板中使用

jeongee 发表于 2011-1-26 20:32:44

你可以直接
load->view("header",$data);
load->view("main");
load->view("xxx");
下面2个都会共享$data的数据,不需要你先把header的html值存到变量里去的

zfm1988 发表于 2011-1-26 21:49:41

谢谢,版主这个方法是在视图中调用视图,我的想法是在控制你里面,不过我找到啦一种比较好的解决方法,


function index()
{
    $data['w'] = 123456;

    $data['header'] = $this->load->view('test', $data);

    $this->load->view('welcome_message');
}

jeongee 发表于 2011-1-26 22:05:42

回复 5# zfm1988


   一样的道理,只要第一次load-》view的时候把数据传进去,下面在load都可以使用到的

Hex 发表于 2011-1-27 11:51:46

不建议在控制器里进行视图嵌套。

zfm1988 发表于 2011-1-27 12:03:21

Hex,手册里面可是建议在控制器里用啦

Hex 发表于 2011-1-27 12:09:50

回复 8# zfm1988


    手册不全是最佳实践。
只是告诉你可以这么用。
当然,所谓的“最佳实践”,也是我个人总结的,不代表 CI 官方。

剑出惊雷 发表于 2013-11-2 03:55:46

Hex 发表于 2011-1-27 11:51 static/image/common/back.gif
不建议在控制器里进行视图嵌套。

请教在Ci里面怎么实现模板的嵌套啊,就像Smary那样使用,在一个模板里 include 另一个模板,ci可以吗??能不能给个实例,不胜感谢.

页: [1] 2
查看完整版本: 嵌套视图中参数传递问题