【问题标题】:livewire validation according to another input根据另一个输入进行 livewire 验证
【发布时间】:2021-11-09 11:12:32
【问题描述】:

我有一个输入需要根据另一个输入进行验证。我想创建一个课程,需要选择一个教室和参与者容量。选择的教室有一个自己的容量字段,我的参与者容量输入不能大于教室的容量。如何验证?

    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" />

例如,选定的教室只包含 5 名学生,因此我无法选择参与者容量 6。而 form.class_id 保留班级的 ID,因为我需要它。但我还需要在规则数组中使用类->容量。

【问题讨论】:

  • 你的问题不清楚。您要验证 form.capacity=form.class_id 吗??
  • 不,我保留 form.class_id 但类有一个容量字段,我的 form.capacity 输入不能超过此限制。例如 class->capacity 是 5 所以我的容量输入不能是 6
  • 为什么不将class->容量设置为最大容量输入?

标签: php laravel validation laravel-livewire


【解决方案1】:

你可以这样做:

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

您可以根据自己的场景使用这些验证。

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

【讨论】:

  • 但 class_id 保留的是 id 而不是类的容量。我需要这样的东西:受保护的数组 $rules = [ 'form.class_id' => 'required|integer', 'form.capacity' => 'required|integer|lte:class->capacity', ];
  • 你的问题我不清楚。请你更新一下。
  • 好的,然后为class->容量创建一个隐藏字段,然后您可以在验证中使用它来比较它的值和容量。
  • 很高兴为您提供帮助。如果它真的对您有帮助,请投票并接受它作为最佳答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2017-12-16
  • 1970-01-01
  • 2019-06-04
  • 2021-03-15
相关资源
最近更新 更多