将多个变量传递给视图?

时间:2011-07-09 09:08:17

标签: php model-view-controller codeigniter variables view

所以,我有两个变量$posts$comments分别保存帖子和注释数组,我有一个单独的视图接受这些变量,执行foreach循环并将它们打印在同一个变量上页。这里的问题是,我如何将两个变量传递给视图?

如果它是单个变量,我会像$this->load->view('myview',$myvar)那样传递它。

我尝试将它作为这样的数组传递,但它仍然无效。

$data=array($var1,$var2);
$this->load->view('myview',$data);

任何帮助将不胜感激!感谢。

6 个答案:

答案 0 :(得分:9)

您需要在传递时访问视图中的变量。使用array($var1,$var2);是有效的,但可能不是您想要实现的目标。

尝试

$data = $var1 + $var2;

$data = array_merge($var1, $var2);

代替。有关如何访问传递给视图的变量的详细文档,请参阅 Views

使用array($var1,$var2);的问题在于您将创建两个视图变量:${0}${1}(数组的键成为变量名,数组中有两个键:{ {1}}和0)。

这些变量名称是无效标签,因此您需要在视图级别将1括起来。

通过这种方式,您无法有效地命名变量。

答案 1 :(得分:2)

控制器中最简单的事情:

$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);

然后,在您看来,您只需执行以下操作:

foreach($posts as $post) {
...
}

您可以保存传递给视图的$ data变量中的任何对象。当我需要遍历从模型中获得的结果集时,我会这样做。

答案 2 :(得分:0)

使用关联数组看起来是最好的解决方案。 拿一个数组

$data = array(
    'posts' => $posts,
    'comments' => $comments,
);
$this->load->view('myview',$data);

这可能会帮助您找到解决方案。

答案 3 :(得分:0)

这是使用compact的另一种推荐方式:

$data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', compact('data1', 'data2', 'data3');

答案 4 :(得分:0)

 $data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', $data1 + $data2 + $data3);

答案 5 :(得分:-1)

$this->render($views_array,$data);