【问题标题】: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-&gt;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;
      

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

      【讨论】:

        猜你喜欢
        • 2013-11-12
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 2013-03-03
        相关资源
        最近更新 更多