I have a livewire component that generates input fields via foreach loop based on how items the customer would like to buy. But I cant seen to validate if required due to if the input is null it doesn’t come across in the array. Therefore livewire doesn’t know it exists.
Using Laravel 8, Livewire v2
Component Controller
class TourBookingForm extends Component
{
public $qtySelected = 1;
public $inputs = [];
public function store(){
$validatedDate = $this->validate([
'inputs.*.*.firstname' => 'required',
],
[
'inputs.*.*.firstname' => 'name field is required',
]);
}
Blade File:
<form wire:submit.prevent="store>
@csrf`
@for ($i = 1; $i <= $qtySelected; $i++)
<div class="mt-1 sm:mt-0 sm:col-span-2">
<input type="text"
name="j{{$i}}p{{$p}}_first_name"
id="j{{$i}}p{{$p}}_first_name"
wire:model="inputs.{{$i}}.{{$p}}.firstname"
autocomplete="first-name"
value="{{ old('first_name') }}">
@error('inputs.' . $i . '.' . $p . '.firstname') <span class="text-danger error">{{ $message }}
</span>@enderror
</div>
eg if $qtySelected
is 3, it will require inputs.1.1.firstname, inputs.2.1.firstname, inputs.3.1.firstname
in some case if a checkbox is selected it would require more inputs inputs.eg inputs.2.2.firstname
`