Я новичок в программировании, поэтому, пожалуйста, извините за неправильное понимание валидации в Laravel.
Я пытаюсь создать веб-сайт для геймеров конкретной игры c, где пользователи могут регистр. Когда они отправляют форму, я должен проверить, существует ли их учетная запись или нет. Для этого у меня есть внешний api (api из игры), который я могу использовать для проверки своей учетной записи.
Я попытался решить это следующим образом в моем RegisterController
:
protected function validator(array $data)
{
$validation = $this->isSummonerValid($data['summonername']);
if ($validation) {
return Validator::make($data, [
'summonername' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'region' => ['required', 'string'],
'rank' => ['required', 'string'],
'lane' => ['required', 'array'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
} else {
return view('auth.register');
}
}
Все, что делает isSummonerValid()
, это использует API и возвращает true, если пользователь существует в игре, и false, если нет.
protected function isSummonerValid($summonerName)
{
$client = new Client();
try {
$response = $client->request('GET',
'https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-name/' . $summonerName .
'?api_key=' . APIKEY);
} catch (ClientException $e) {
return false;
}
return true;
}
Когда вызов API завершается успешно, все работает нормально. Пользователь создается и может войти в систему.
Когда происходит сбой вызова API (пользователь не существует), я получаю эту ошибку:
Метод Illuminate \ View \ View :: validate не существовать.
Может кто-нибудь объяснить, как я могу создать собственный валидатор в Laravel, который вызывает внешний API?