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

[已解决] 嵌套视图中参数传递问题

[复制链接]
发表于 2011-1-26 17:23:14 | 显示全部楼层 |阅读模式
本帖最后由 zfm1988 于 2011-1-26 21:49 编辑

控制器 welcome.php
PHP复制代码
       function index()
{
 
$data['w']=123456;
 
$data['header']=$this->load->view('test','',TRUE);
 
$this->load->view('welcome_message',$data);
 
}
 
 
复制代码


视图test.php
PHP复制代码
echo $w.“测试是否输出$w的值”;
复制代码


视图welcome.php
PHP复制代码
echo $w.'<hr />';  
复制代码



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

我就想问为什么$w在test。php中是null呢?我看手册也是这样写的啊
发表于 2011-1-26 18:20:46 | 显示全部楼层
本帖最后由 suxiaolu 于 2011-1-26 18:29 编辑

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

PHP复制代码
 
function index()
{
    $data['w'] = 123456;
 
    $data['header'] = $this->load->view('test', $data, TRUE);
 
    $this->load->view('welcome_message', $data);
}
 
复制代码
 楼主| 发表于 2011-1-26 20:24:16 | 显示全部楼层
谢谢你,你这个做法我知道,但是我在手册上看到不需要把变量传递给没一个子视图,就像smarty里面的变量一样,可以在任何嵌套模板中使用
发表于 2011-1-26 20:32:44 | 显示全部楼层
你可以直接
load->view("header",$data);
load->view("main");
load->view("xxx");
下面2个都会共享$data的数据,不需要你先把header的html值存到变量里去的
 楼主| 发表于 2011-1-26 21:49:41 | 显示全部楼层
谢谢,版主这个方法是在视图中调用视图,我的想法是在控制你里面,不过我找到啦一种比较好的解决方法,


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

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

    $this->load->view('welcome_message');
}
发表于 2011-1-26 22:05:42 | 显示全部楼层
回复 5# zfm1988


   一样的道理,只要第一次load-》view的时候把数据传进去,下面在load都可以使用到的
发表于 2011-1-27 11:51:46 | 显示全部楼层
不建议在控制器里进行视图嵌套。
 楼主| 发表于 2011-1-27 12:03:21 | 显示全部楼层
Hex,手册里面可是建议在控制器里用啦
发表于 2011-1-27 12:09:50 | 显示全部楼层
回复 8# zfm1988


    手册不全是最佳实践。
只是告诉你可以这么用。
当然,所谓的“最佳实践”,也是我个人总结的,不代表 CI 官方。
发表于 2013-11-2 03:55:46 | 显示全部楼层
Hex 发表于 2011-1-27 11:51
不建议在控制器里进行视图嵌套。

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

本版积分规则