【问题标题】:Modify a laravel blade variable without displaying it修改 laravel 刀片变量而不显示它
【发布时间】:2016-11-21 10:19:15
【问题描述】:

在我的刀片代码中,我需要一个计数器,为由 foreach 循环呈现的 div 提供唯一 ID。为此,我在刀片模板中创建了一个变量,如下所示:

{{ $counter = 0 }}

我在 html 中使用它,只用{{ $counter = 0 }} 输出它

之后,我将其递增如下:{{ $counter++ }}

这一切都像一个魅力,除了在{{ $counter++ }} 它不仅增加变量,还将它输出到视图。

有什么办法可以预防吗?

【问题讨论】:

  • 在 Laravel 5.3 @if($loop->first) Do something on the first iteration. @endif @if($loop->last) Do something on the last iteration. @endif
  • 这是一个很酷的功能,但实际上我需要为数组中的每个项目指定一个数字,而不仅仅是第一个和最后一个。我找不到很多关于循环变量的文档,知道它是否包含第一个和最后一个以上的内容?
  • 糟糕但可以工作的版本<?php $counter++;?>
  • 您可以扩展 Blade。看这里:stackoverflow.com/a/13019365/844726
  • Blade 没有定义/修改 PHP 变量的方法;您要么需要扩展 Blade 的功能来处理这个问题,要么只需使用 <?php ... ?> 块。

标签: php laravel blade laravel-blade


【解决方案1】:

起初在刀片模板上添加逻辑是一种不好的做法,但有时我们不得不这样做,在这种情况下,您可以像这样使用 PHP 标记:

<?php $counter++; ?>

docs 表示的另一种在 Laravel 5.4 上执行此操作的方法:

在某些情况下,将 PHP 代码嵌入到视图中很有用。你 可以使用 Blade @php 指令执行一段纯 PHP 在您的模板中:

@php
   $counter++;
@endphp

如果你在数组键上有你的位置,你可以像这样在@foreach 上使用它:

@foreach ($variable as $key => $value) 
    //current position = $key
    # code...
@endforeach

【讨论】:

    【解决方案2】:

    我使用这个扩展在刀片上设置变量: https://github.com/RobinRadic/blade-extensions

    您可以使用 simple as @set($count, 1) 或任何您想要的值。

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2017-04-18
      • 2018-10-09
      • 2014-12-08
      • 2017-02-24
      • 2020-08-21
      • 2019-09-20
      • 1970-01-01
      • 2017-06-17
      相关资源
      最近更新 更多