You are overriding your own validation that you have set in BaseController.
This are a stand alone function, that you pass your rules directly into that array.
$this->validate([])
If wan't to use setRules() you need to runt it like this:
if($this->validation->withRequest($this->request)->run()).
Here you can see the actual code that stand alone function executes.
PHP Code:
/**
* A shortcut to performing validation on input data. If validation
* is not successful, a $errors property will be set on this class.
*
* @param array|string $rules
* @param array $messages An array of custom error messages
*
* @return boolean
*/
protected function validate($rules, array $messages = []): bool
{
$this->validator = Services::validation();
// If you replace the $rules array with the name of the group
if (is_string($rules))
{
$validation = config('Validation');
// If the rule wasn't found in the \Config\Validation, we
// should throw an exception so the developer can find it.
if (! isset($validation->$rules))
{
throw ValidationException::forRuleNotFound($rules);
}
// If no error message is defined, use the error message in the Config\Validation file
if (! $messages)
{
$errorName = $rules . '_errors';
$messages = $validation->$errorName ?? [];
}
$rules = $validation->$rules;
}
return $this->validator
->withRequest($this->request)
->setRules($rules, $messages)
->run();
}