我正在尝试为数组输入创建一条错误响应消息:
这是我的表格:
<div class="form-group col-md-12">
<div class="row">
<div class="col-md-6">
<label for="client-type">Client Type</label>
<input type="text" name="client_type[]" class="form-control" value="Panelist" readonly>
</div>
<div class="col-md-6">
<label for="commission-percentage">Commission Percentage</label>
<input type="number" name="commission_percentage[]" class="form-control">
</div>
</div><br>
<div class="row">
<div class="col-md-6">
<label for="client-type">Client Type</label>
<input type="text" name="client_type[]" class="form-control" value="Non Panelist" readonly>
</div>
<div class="col-md-6">
<label for="commission-percentage">Commission Percentage</label>
<input type="number" name="commission_percentage[]" class="form-control">
</div>
</div>
这是我的控制器:
public function store(StoreCommissionsList $request)
{
$attributes = $request->validated();
dd($attributes);
}
最后是我的StoreCommissionsList
表单请求:
public function rules()
{
$commission = request('commission_percentage');
$rules = [];
$rules['role_id'] = 'required';
$rules['client_type'] = 'required';
if ( $commission[0] == null && $commission[1] == null )
{
$rules['commission_percentage'] = 'required';
}
return $rules;
}
public function messages()
{
return [
'role_id.required' => 'Please select a user role',
'client_type.required' => 'Please input a client type',
'commission_percentage.required' => 'Please fill in a percentage commission for each client type',
];
}
正在发生的事情是:如果表单中的所有字段均为空白,则就返回所需的验证消息而言,似乎只有role_id
通过了验证检查。 commission_percentage
完全没有经过验证,在输入role_id
之后,表单将提交,意味着commission_percentage
验证由于某种原因而被忽略。
请协助。
更新
这是我使用通配符(*)点表示法的实现。
public function rules()
{
$rules = [];
$rules['role_id'] = 'required';
$rules['client_type.*'] = 'required';
$rules['commission_percentage.*'] = 'required';
return $rules;
}
为此,对于请求中的每个数组项,验证错误消息都会重复,对于我来说,是这样的:
The commission_percentage.0 field is required.
The commission_percentage.1 field is required
因此,在我的rules
中,较早的实现可能是解决此重复问题的方法。