[英]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.