Laravel Livewire - 获取所有复选框值
Laravel Livewire - Get all checkbox value
我想在 table 上添加过滤器。我的过滤器是帐户的安全级别。
有我的HTML
<input type="checkbox" value="O" wire:model="level" id="O">
<label for="O">O</label>
<input type="checkbox" value="a" wire:model="level" id="a">
<label for="a">A</label>
<input type="checkbox" value="b" wire:model="level" id="b">
<label for="b">B</label>
<input type="checkbox" value="c" wire:model="level" id="c">
<label for="c">C</label>
还有我的 Livewire 组件:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\User;
class Compliance extends Component
{
public $level = [];
public function render()
{
return view('livewire.compliance', [
'customers' => $this->row
]);
}
public function getRowsQueryProperty()
{
$query = User::query()
->when($this->level, fn($query, $levels) => $query->level($levels));
return $query;
}
public function getRowsProperty()
{
return $this->rowsQuery->paginate(20);
}
}
我的问题是:
$this->level 始终只有一个值,而不是像
这样的值数组
[
0 => 'O',
1 => 'a'
]
我希望每次选中或取消选中一个复选框时都选中所有复选框。
感谢阅读
您可以添加 wire:click。例如,像这样更改您的输入字段:
<input type="checkbox" wire:click="levelClicked" value="a" wire:model="level" id="a">
并在 Compliance 组件中,添加一个新方法:
public function levelClicked()
{
// now the property $this->level will contain all the selected values
}
好的,可以单击并附加到数组,或者从 blade 执行类似的操作。
<form>
@foreach($checkboxes as $checkbox)
<div class="mt-1">
<label class="inline-flex items-center">
<input type="checkbox" value="{{ $checkbox->id }}" wire:model="level.{{ $checkbox->id }}" class="form-checkbox h-6 w-6">
<span class="ml-3 text-sm">{{ $checkbox->name }}</span>
</label>
</div>
@endforeach
</form>
这样当您提交表单时,所有值都将在 $level
数组中。
我想在 table 上添加过滤器。我的过滤器是帐户的安全级别。 有我的HTML
<input type="checkbox" value="O" wire:model="level" id="O">
<label for="O">O</label>
<input type="checkbox" value="a" wire:model="level" id="a">
<label for="a">A</label>
<input type="checkbox" value="b" wire:model="level" id="b">
<label for="b">B</label>
<input type="checkbox" value="c" wire:model="level" id="c">
<label for="c">C</label>
还有我的 Livewire 组件:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\User;
class Compliance extends Component
{
public $level = [];
public function render()
{
return view('livewire.compliance', [
'customers' => $this->row
]);
}
public function getRowsQueryProperty()
{
$query = User::query()
->when($this->level, fn($query, $levels) => $query->level($levels));
return $query;
}
public function getRowsProperty()
{
return $this->rowsQuery->paginate(20);
}
}
我的问题是: $this->level 始终只有一个值,而不是像
这样的值数组[
0 => 'O',
1 => 'a'
]
我希望每次选中或取消选中一个复选框时都选中所有复选框。 感谢阅读
您可以添加 wire:click。例如,像这样更改您的输入字段:
<input type="checkbox" wire:click="levelClicked" value="a" wire:model="level" id="a">
并在 Compliance 组件中,添加一个新方法:
public function levelClicked()
{
// now the property $this->level will contain all the selected values
}
好的,可以单击并附加到数组,或者从 blade 执行类似的操作。
<form>
@foreach($checkboxes as $checkbox)
<div class="mt-1">
<label class="inline-flex items-center">
<input type="checkbox" value="{{ $checkbox->id }}" wire:model="level.{{ $checkbox->id }}" class="form-checkbox h-6 w-6">
<span class="ml-3 text-sm">{{ $checkbox->name }}</span>
</label>
</div>
@endforeach
</form>
这样当您提交表单时,所有值都将在 $level
数组中。