[英]How can I access only specific input fields using foreach loop in Laravel livewire?
我是这里的新手并使用 livewire,我正在做多个提交,以便用户可以添加许多主题及其各自的字段。 这是我的表格:
@foreach ($topics as $index => $topic )
<div class="form-column new-form">
<h1 class="form-title">Topics </h1>
<div class="form-column">
<label for="topicname">topic name</label>
<input type="url" name="topics[{{$index}}][name]" wire:model="topics.{{$index}}.name" id="topicname" placeholder="Enter topic name">
</div>
<div class="form-row">
<div class="form-column">
<label for="coursestatus">status</label>
<select name="topics[{{$index}}][status]" id="status" wire:model="topics.{{$index}}.status">
<option value="enabled" selected>Enabled</option>
<option value="disabled">Disabled</option>
</select>
</div>
<div class="form-column">
</div>
</div>
<div class="form-column">
<label for="topicdescription">topic description</label>
<textarea name="topics[{{$index}}][description]" wire:model="topics.{{$index}}.description" id="topicdescription" cols="30" rows="10"></textarea>
</div>
<div class="form-column">
<label for="topicdocuments">any documents?</label>
<input type="file" name="topics[{{$index}}][document]" wire:model="topics.{{$index}}.document" multiple>
</div>
<button class="form-submit" wire:click.prevent="removetopic({{ $index }})">Remove topic <i class="bi bi-chevron-right"></i></button>
</div>
@endforeach
<div class="form-row">
<button class="form-submit" wire:click.prevent="back">Course <i class="bi bi-chevron-left"></i></button>
<button type="submit" class="form-reset"><i class="bi bi-x-lg"></i> Reset</button>
<button type="submit" wire:click.prevent="addtopic" class="form-submit"><i class="bi bi-plus-lg"></i> Add This Topic</button>
<button class="form-submit" wire:click.prevent="test">Lessons <i class="bi bi-chevron-right"></i></button>
</div>
我可以使用我的 livewire 组件中的测试函数来获取表单的完整数组:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use Illuminate\Support\Facades\DB;
class Courseupload extends Component
{
public $topics = []
public function mount()
{
$this->topics = [[
'name'=>'', 'descrption'=> '', 'status'=> '', 'document'=> ''
]];
}
public function addtopic()
{
$this->topics[] = ['name'=> '', 'status'=> '', 'description'=>'', 'document'=>''];
}
public function test()
{
dd($this->topics);
}
}
示例数组多种形式的数组
如何从生成的每个表单中仅获取特定字段,例如“名称”、“描述”等?
谢谢。
您可以将array
转换为collection
,然后使用pluck
方法获取所需的单个字段。 如果您想要多个字段,那么您可以map
每个元素并使用Arr::only
方法返回您想要的字段。
例如:
$collection = collect([
['name' => 'First nane', 'status' => 'First status', 'description' => 'First description', 'document' => 'First document'],
['name' => 'Second name', 'status' => 'Second status', 'description' => 'Second description', 'document' => 'Second document']
]);
$singleField = $collection->pluck('name');
$multipleFields = $collection->map(function ($iter) {
return Arr::only($iter, ['name', 'status']);
});
dd($singleField, $multipleFields);
以上内容对您有何不同,您是否会直接使用$this->topics
属性:
$collection = collect($this->topics);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.