【问题标题】:View included by $this->include does note recieve passed params$this->include 包含的视图不接收传递的参数
【发布时间】:2020-06-04 22:39:13
【问题描述】:
当我在另一个视图中使用 $this->include 方法时,是否可以将参数传递给视图?
例如:
<?php
foreach ($destaques as $camping) {
$this->include('partial', ['camping' => $camping])
}
?>
但 partial.php 没有收到 $camping 值。
【问题讨论】:
标签:
php
codeigniter
codeigniter-4
【解决方案1】:
当使用$this->include 时,您会将一个视图的echo 转换为另一个视图。因此,默认情况下,您正在加载的视图可以访问您提供给父视图的任何数据,但不能访问您在其中声明的变量。
你的情况有几个选择:
使用查看方法:
foreach ($destaques as $camping) {
echo view('partial', ['camping' => $camping]);
}
在局部视图中移动您的 foreach 循环,以便您在其中使用 $destaques。
<?php
// dont forget to echo
echo $this->include('partial')
?>
// or this way with short tags enabled
<?= $this->include('partial') ?>
只需将部分视图嵌入到之前的 foreach 循环中
foreach ($destaques as $camping) {
// whatever your partial view is
}
【解决方案2】:
您好,我尝试使用参数选项。我测试代码并且它正在工作。但请注意,包含视图布局方法的工作方式类似于 php 默认包含函数,并且在您回显它之前它不会显示。
这是我用来测试你的代码,它对我有用。检查一下
$inc = '';
foreach ($destaques as $camping) {
$inc .= $this->include('partial', ['camping' => $camping])
}
echo $inc;
这显示并为我工作检查它。如果这不是您所期望的,请引起我的注意