エラー箇所を検討つける
laravelで
Class 'App\Providers\Validator' not found
というエラーが出た。
対処法ファイルはapp/Providers/ValidationServiceProvider.phpらしい
見てみると
13行目 return new Validator($translator, $data, $rules, $messages, $customAttributes);
のValidatorが適切に読み込まれていないらしい。
たぶんnamespaceが正しく読み込まれていないということだろう。
とりあえずconfig/app.phpを確認
基本的なエイリアスの定義はここにあるので、まずはconfig/app.phpの中からValidatorを探す。
すると、239行目に
'Validator' => Illuminate\Support\Facades\Validator::class,
とある。
とりあえずapp/Providers/ValidationServiceProvider.phpにuse Validatorと入れてみる。
すると、次は以下のエラーがでる、、、
Call to undefined method Illuminate\Support\Facades\Validator::setPresenceVerifier()
対象ファイルはvendor/laravel/framework/src/Illuminate/Validation/Factory.phpみたいなのでとりあえず開く。
どうやら、$validatorが読み込まれていないみたいなのが原因らしい。
再び原因を探る
エラーをみるとsetPresenceVerifier()が定義されていないと出るので、setPresenceVerifier()が定義されているファイルvendor/laravel/framework/src/Illuminate/Validation/Validator.phpを開く
すると、1054行目にpublic function setPresenceVerifier(PresenceVerifierInterface $presenceVerifier)があった。
ここがピンポイントというよりはValidator.php内のclass Validation自体が上手く読み込まれていないらしい。
つまりはuse Illumintion\Validation\Validatorをvendor/laravel/framework/src/Illuminate/Validation/Factory.phpに上手く読み込ませればいい。
ということで、
vendor/laravel/framework/src/Illuminate/Validation/Factory.phpにuse Illumintion\Validation\Validatorを記述
駄目だ同様のエラーがでる、、、
もしやと思い、app/Providers/ValidationServiceProvider.phpのuse Validatorをuse Illuminate\Support\Facades\Validatorに書き換えてみる。
解決
useする箇所を間違えてたらしい。
しかし、Validatorクラス多すぎだよ、、、
参照