Why do you have the extra array around your $rules ?
$this->validate(
$request,
[
$rules
],
[
'*.required' => 'Rank name cannot be empty.',
'*.string' => 'Rank name has to be a string.',
'*.max' => 'Rank name can only be a maximum length of 32 letters.',
'*.regex' => 'Rank name can only contain letters, spaces and dashes.'
]
);
I think this should be :
$this->validate(
$request,
$rules,
[
'*.required' => 'Rank name cannot be empty.',
'*.string' => 'Rank name has to be a string.',
'*.max' => 'Rank name can only be a maximum length of 32 letters.',
'*.regex' => 'Rank name can only contain letters, spaces and dashes.'
]
);