33 lines
847 B
PHP
33 lines
847 B
PHP
|
<?php
|
||
|
|
||
|
namespace App\Form\Data;
|
||
|
|
||
|
use App\Form\Casts\CollectionCast;
|
||
|
use App\Form\Transformers\CollectionTransformer;
|
||
|
use Illuminate\Support\Collection;
|
||
|
use Spatie\LaravelData\Data;
|
||
|
use Spatie\LaravelData\Attributes\WithCast;
|
||
|
use Spatie\LaravelData\Attributes\WithTransformer;
|
||
|
|
||
|
class FormConfigData extends Data
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* @param Collection<int, SectionData> $sections
|
||
|
*/
|
||
|
public function __construct(
|
||
|
#[WithCast(CollectionCast::class, target: SectionData::class)]
|
||
|
#[WithTransformer(CollectionTransformer::class, target: SectionData::class)]
|
||
|
public Collection $sections
|
||
|
) {
|
||
|
}
|
||
|
|
||
|
public function fields(): FieldCollection
|
||
|
{
|
||
|
return $this->sections->reduce(
|
||
|
fn ($carry, $current) => $carry->merge($current->fields->all()),
|
||
|
new FieldCollection([])
|
||
|
);
|
||
|
}
|
||
|
}
|