エラー箇所を検討つける
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クラス多すぎだよ、、、
参照