根据另一个输入进行 livewire 验证

livewire validation according to another input

我有一个输入需要根据另一个输入进行验证。我想创建一节课,需要 select 一个 class 房间和参与者 capacity.chosen class 房间有自己的容量字段,我的参与者容量输入不能大于 class房间的容量。如何验证?

    protected array $rules = [
        'form.class_id' => 'required|integer',
        'form.capacity' => 'required|integer',
    ];
    <select wire:model.defer="form.class_id" id="form.class_id" class="border-gray-300 py-3 px-4 rounded-md shadow-sm mt-1 block w-full">
        <option value="null" selected disabled>{{ __('Sınıf Seçin') }}</option>
        @foreach($classes as $c)
            <option value="{{ $c->id }}">{{ $c->name }} ({{ $c->location->name }})</option>
        @endforeach
    </select>
    <x-jet-input-error for="form.class_id" class="mt-2" />
    <input wire:model.defer="form.capacity" type="number" name="form.capacity" id="form.capacity" class="border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm mt-1 block w-full">
    <x-jet-input-error for="form.capacity" class="mt-2" />

例如 selected clasroom 只有 5 个学生,所以我不能 select 参与者容量 6。并且 form.class_id 保留 class 的 ID,因为我需要它。但我还需要在规则数组中使用 class->capacity。

你可以这样做:

 protected array $rules = [
      'form.class_id' => 'required|integer',
      'form.capacity' => 'required|integer|lte:form.class_id',
 ];

您可以根据自己的情况使用这些验证。

  • gt - 大于
  • gte - 大于等于
  • lt - 小于
  • lte - 小于等于