$this->include 包含的视图确实收到传递的参数

问题描述 投票:0回答:2

当我在另一个视图中使用 $this->include 方法时可以传递参数到视图吗?

例如:

<?php
foreach ($destaques as $camping) {
    $this->include('partial', ['camping' => $camping])
}
?>

但是partial.php 没有收到$camping 值。

php codeigniter codeigniter-4
2个回答
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
}

0
投票

您好,我尝试使用参数选项。我测试了代码并且它可以工作。但请注意,包含视图布局方法的工作方式与 php 默认包含函数类似,并且在您回显之前它不会显示。 这是我的代码,我用它来测试你的代码,它对我有用。检查一下

$inc = '';
foreach ($destaques as $camping) {
    $inc .= $this->include('partial', ['camping' => $camping])
}
echo $inc;

这显示并为我工作检查它。如果这不是您所期望的,请引起我的注意

© www.soinside.com 2019 - 2024. All rights reserved.