Laravel's Blade 中的循环变量
Posted
技术标签:
【中文标题】Laravel\'s Blade 中的循环变量【英文标题】:Loop variables in Laravel's BladeLaravel's Blade 中的循环变量 【发布时间】:2018-05-26 03:43:54 【问题描述】:我在 Laravel 的 Blade 模板中做了很多循环,有时我必须记住一些条件,比如 $found 或 $needToSave,诸如此类。
这是一个小例子:
<?php $found = false; ?>
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($post->something == "value")
<?php $found = true; ?>
@endif
@if ($loop->parent->last)
@if ($found)
I really found something! Do something special!
@endif
@endif
@endforeach
@endforeach
现在,<?php $found = false|true ?>
部分是否有更好的方法?
对我来说,这似乎不干净,我正在寻找一个更清洁的解决方案,它与模板引擎一起发挥作用。我知道@php
,但这对我来说似乎很丑陋。有什么可以在引擎中分配本地变量吗?
干杯
【问题讨论】:
你到底想做什么?您想知道是否有任何用户有任何具有特定价值的帖子吗?如果是这样,您应该考虑在控制器中执行此操作,甚至从中进行数据库查询。 嗯,是的,这也是我想到的 $found = false
,但我认为它会打印出一些东西,不是吗?如果没有,那就是我要找的!
你是对的!对不起!它只是返回变量,当我测试这个理论时我什至没有检查,因为我 dd()'ed 变量。
【参考方案1】:
如果以后不需要该变量,可以将代码重构为:
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($loop->parent->last && $post->something === 'value')
I really found something! Do something special!
@endif
@endforeach
@endforeach
如果你以后要使用它,你可以使用@php
和@endphp
在某些情况下,将 PHP 代码嵌入到视图中很有用。您可以使用 Blade
@php
指令在模板中执行纯 PHP 块
https://laravel.com/docs/5.5/blade#php
【讨论】:
是的,正如我所写,我知道@php,但我正在寻找类似@local("found", "something") 之类的解决方案。 $post->something 只是一个例子。我运行的条件要复杂得多,需要时不时地保留一个标记。 @AndreasHerbert Blade 中没有这样的东西,所以最好使用@php
或者只是重构代码。以上是关于Laravel's Blade 中的循环变量的主要内容,如果未能解决你的问题,请参考以下文章