Я пытаюсь создать одно сообщение об ошибке для ввода массива:
Это моя форма:
<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
по какой-то причине упущена.
Пожалуйста, помогите.
Update
Вот моя реализация с использованием подстановочного знака (*) с точечной нотацией.
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
была возможным решением этой проблемы с дублированием.