将多个变量传递给视图?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将多个变量传递给视图?相关的知识,希望对你有一定的参考价值。
所以,我有两个变量$posts
和$comments
分别保存帖子和注释数组,我有一个单独的视图接受这些变量,执行foreach循环并在同一页面上打印它们。这里的问题是,我如何将两个变量传递给视图?
如果它是一个单一的变量我传递它像这个$this->load->view('myview',$myvar)
。
我尝试将它作为这样的数组传递,但它仍然没有用。
$data=array($var1,$var2);
$this->load->view('myview',$data);
任何帮助将不胜感激!谢谢。
答案
您需要在传递时访问视图中的变量。使用array($var1,$var2);
是有效的,但可能不是你想要实现的。
尝试
$data = $var1 + $var2;
要么
$data = array_merge($var1, $var2);
代替。有关如何访问传递给视图的变量的详细文档,请参阅Views。
使用array($var1,$var2);
的问题是你将创建两个视图变量:${0}
和${1}
(数组的键成为变量名,你的数组中有两个键:0
和1
)。
这些变量名称是无效标签,因此您需要在视图级别将名称与{}
括起来。
因此,您失去了将变量命名为有用的功能。
另一答案
在控制器中最简单的事情:
$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);
然后,在您的视图中,您只需执行以下操作:
foreach($posts as $post) {
...
}
您可以保存传递给视图的$ data变量中的任何对象。当我需要遍历从模型中获得的结果集时,我会这样做。
另一答案
使用关联数组看起来是最好的解决方案。拿一个阵列
$data = array(
'posts' => $posts,
'comments' => $comments,
);
$this->load->view('myview',$data);
这可能会帮助您获得解决方案。
另一答案
这是使用compact的另一种推荐方式:
$data1 = 'your data';
$data2 = 123;
$data3 = array();
$this->load->view('myview', compact('data1', 'data2', 'data3');
另一答案
尝试
$data1 = 'your data';
$data2 = 123;
$data3 = array();
$this->load->view('myview', $data1 + $data2 + $data3);
另一答案
$this->render($views_array,$data);
以上是关于将多个变量传递给视图?的主要内容,如果未能解决你的问题,请参考以下文章