提问人:Khayam Khan 提问时间:11/13/2023 最后编辑:Khayam Khan 更新时间:11/13/2023 访问量:46
如何在递归 Laravel 组件中实现循环索引?
how can I achieve loop indexing in recursive laravel components?
问:
我陷入了一个问题,尝试了很多方法,但都是徒劳的。 实际上,我想要的是在递归Laravel组件中实现增量索引。 例如,我希望索引是 0, 1, 2, 3, 4, 5, 6, 7, 8 ......等等。
我的代码是,
@foreach($costs as $cost)
<x-estimation-item :cost="$cost" />
@endforeach
我的组件是,
@props([
'cost',
])
<div>
@foreach($cost->children as $child)
<x-estimation-item :cost="$child" />
@endforeach
</div>
我正在使用 Laravel 邻接列表包,我的级别高达 9 个级别。 现在,我只想在每次组件调用时增加值。 我将访问子项的 foreach 循环上方的增量值。 知道我该如何实现这一目标吗?
如果可能的话,任何想法或代码段!
答:
1赞
Oluwafemi Sule
11/13/2023
#1
让你的组件接受一个反道具。EstimationItem
App\View\Components\EstimationItem
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class EstimationItem extends Component
{
public $cost;
public $counter;
public function __construct($cost, $counter) {
$this->cost = $cost;
$this->counter = $counter;
$counter->increment();
}
}
resources/views/components/estimation-item.blade.php
@props([
'cost',
'counter'
])
<div>
@foreach($cost->children as $child)
{{ $counter->getValue() }}
<x-estimation-item :cost="$child" :counter="$counter" />
@endforeach
</div>
声明一个类来容器索引,并在每次呈现组件时递增索引。Counter
App\Pojos\Counter
namespace App\Pojos;
final class Counter {
private int index;
public function __construct() {
$this->index = 0;
}
public function increment() {
$this->index++;
}
public function getValue(): int {
return $this->index;
}
}
初始化计数器并将其作为 prop 传递给您的组件。
@php
$counter = new \App\Pojo\Counter();
@endphp
@foreach($costs as $cost)
{{ $counter->getValue() }}
<x-estimation-item :cost="$cost" :counter="$counter" />
@endforeach
您可以在操场上看到这一点。
评论