我想验证数组输入值是否已被选中。在我的情况下,我使用Laravel Livewire,我有动态输入,如我可以添加新选项,如大小,颜色。但我不想在两个输入中选择相同的值,如在两个输入中选择大小。基本上,如果在第二个输入中选择相同的值,我想显示它已被选中。
以下代码livewire控制器,
public $i = -1;
public $inputs = [];
public $options = ['Size', 'Color', 'Material', 'Style'];
public $option_name;
function rules()
{
$rules = [];
if ($this->inputs) {
foreach ($this->inputs as $key => $val) {
$rules['option_name.' . $val] = ['required'];
}
return $rules;
}
}
public function addLine($i)
{
$i = $i + 1;
$this->i = $i;
array_push($this->inputs, $i);
}
public function updated($propertyName)
{
if ($this->inputs) {
$this->validateOnly($propertyName);
}
}
下面代码livewire查看代码,
@forelse ($inputs as $key => $value)
<x-native-select label="Option name" :options="$options" wire:model="option_name.{{ $value }}"/> // I am using livewire-wireui
@empty
@endforelse
<a wire:click="addLine({{ $i }})" class="mt-4 text-sm cursor-pointer">
+ Add another option
</a>
你知道怎么验证吗?
1条答案
按热度按时间0qx6xfy61#
试试这个,让我看看效果如何。
上面的函数会过滤掉选中的选项,这样当它已经被选中时就不可用了。它可能有些矫枉过正,需要社区的改进。欢迎所有的评论。需要注意的一点是,如果用户决定重新开始,你可能需要一种重置方法。沿着于
public $originalOptions
的东西,你想在挂载时设置,然后是一个重置函数,它会给this->options
赋值。有关这些函数的更多信息Lifecycle hooks