如何在递归laravel组件中实现循环索引?

y3bcpkx1  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(106)

我被困在一个问题中,尝试了很多东西,但都是无效的。实际上,我想要的是在递归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 Adjacency List包,我的级别高达9个级别。现在我只想在每次组件调用时增加值。我将在children的foreach循环上方访问增加的值。有什么想法吗?
任何想法或代码,如果可能的话!

qgelzfjb

qgelzfjb1#

让你的EstimationItem组件接受一个反 prop 。
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>


decompose一个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


你可以在操场上看到这一幕。

相关问题