【发布时间】:2022-01-11 15:45:38
【问题描述】:
在 Laravel 中,我使用 livewire 来动态渲染 HTML 表单的一部分。主要形式是一个常规的 Laravel 刀片文件,而不是 Livewire 组件。但是,提交表单时,$request 变量中缺少 livewire 子表单中的字段值。
包含 livewire 组件的 edit.blade.ph 的 sn-p。此文件是常规视图刀片文件,而不是 Livewire 组件。
<div class="row mb-3">
<textarea id="address" type="text" class="form-control @error('address') is-invalid @enderror" name="address" required autocomplete="address" rows="3">{{ $player->address}}</textarea>
</div>
@livewire('address-input', ['player'=> $player])
<div class="row mb-3">
<textarea id="description" type="text" class="form-control @error('description') is-invalid @enderror" name="description" required autocomplete="description" rows="3">{{ $player->description}}</textarea>
</div>
Livewire 组件地址-input.blade.php
<div class="row mb-3">
<label for="region" class="col-md-4 col-form-label text-md-end">{{ __('Region') }}</label>
<div class="col-md-6">
<select wire:model="region" class="form-select" aria-label="Region Label">
<option selected>Select Region</option>
@foreach($regions as $region)
<option value="{{$region->id}}">{{$region->region_name}}</option>
@endforeach
</select>
</div>
</div>
<div class="row mb-3">
<label for="province" class="col-md-4 col-form-label text-md-end">{{ __('Province') }}</label>
<div class="col-md-6">
<select wire:model="province" class="form-select" aria-label="Province Label">
<option selected>Select Province</option>
@foreach($provinces as $province)
<option value="{{$province->id}}">{{$province->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="row mb-3">
<label for="municipality" class="col-md-4 col-form-label text-md-end">{{ __('Municipality') }}</label>
<div class="col-md-6">
<select wire:model="municipality" class="form-select" aria-label="Province Label">
<option selected>Select Municipality</option>
@foreach($municipalities as $municipality)
<option value="{{$municipality->id}}">{{$municipality->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="row mb-3">
<label for="barangay" class="col-md-4 col-form-label text-md-end">{{ __('Barangay') }}</label>
<div class="col-md-6">
<select id="barangay_id" class="form-select" aria-label="Barangay Label">
<option selected>Select Barangay</option>
@foreach($barangays as $barangay)
<option value="{{$barangay->id}}">{{$barangay->name}}</option>
@endforeach
</select>
</div>
</div>
edit.blade.php 的表单提交时,address-input 子表单的输入字段的值不包含在请求中,具体来说,barangay_id 的值。
dd($request) 的输出。
【问题讨论】:
-
我认为您需要重新考虑这种情况下的 livewire 点。不是吗?
-
我倾向于同意您的评论。我是 Livewire 和整个动态页面概念的新手,还没有完全了解这种范式下的“最佳”代码组织/结构。我将其视为一种锻炼形式。我的想法是,既然我正在写的东西就像一个原型,我会同时专注于让这个东西发挥作用。
标签: php laravel forms laravel-8 laravel-livewire