将多个变量传递给视图?

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}(数组的键成为变量名,你的数组中有两个键:01)。

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

因此,您失去了将变量命名为有用的功能。

另一答案

在控制器中最简单的事情:

$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);

以上是关于将多个变量传递给视图?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI-将@State变量传递给多个视图麻烦

如何将图像视图从改造加载的片段传递给子片段?

如何使用laravel中的控制器将多个变量传递给视图

如何将数据从多个视图传递到一个?

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

Android - 将搜索传递给片段