【问题标题】:Passing a variable to another blade php file in a for loop prints only the first entry of the table在 for 循环中将变量传递给另一个刀片 php 文件仅打印表的第一个条目
【发布时间】:2021-06-08 06:58:39
【问题描述】:

我正在使用 Laravel 开展一个项目,但遇到以下问题。当我尝试将 foreach 循环中的变量传递给另一个 Blade.php 文件时,只打印表的第一个条目。

blade.php 主文件中的代码:

@foreach($policereport as $key => $row)
  <?php $data = $row -> content ?>
  @include('design.textBox')
  @yield('text', $data)
@endforeach

textBox.blade.php 文件中的代码:

@section('text')
  <br>
  <div class="text-box">{{ $data }}</div>
@stop

我也试过了,但结果是一样的:

@foreach($policereport as $key => $row)
   @include('design.textBox', ['data' => $row -> content])
   @yield('text')
@endforeach

唯一帮助我遍历表格中所有内容单元格的是:

@foreach($policereport as $key => $row)
    <div class="text-box">{{ $row -> content }}</div>
@endforeach

我是否将变量错误地传递给 textBox 文件?我想将它传递给另一个文件,这样我的代码就更干净了,因为我必须为更多文件做同样的事情。

编辑:通过删除 textBox.blade.php 文件中的部分标记和 cmets 中推荐的 @yield('text') 部分解决了我的问题

【问题讨论】:

  • 我认为对于您的用例,您可以改为使用blade component
  • @yield('text') 有什么用?此外,如果您 @include 一个刀片文件,那么该文件中应该没有 @sections,只有 HTML
  • @brombeer 非常感谢!这解决了我的问题!

标签: php mysql laravel laravel-blade


【解决方案1】:

你可以使用@each (link to documentation)

@each('design.textBox', $policereport, 'data')

在 design.textBox 刀片中:

<br>
<div class="text-box">{{ $data }}</div>

【讨论】:

  • @brombeer 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 2022-11-02
  • 2012-07-20
  • 2019-05-14
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多