Laravelで
BadMethodCallException
Method App\Http\Controllers\FormController::postimg does not exist.
のようなエラーが出た時の対処法を解説します。
これは、コントローラー上に、そんなメソッド(function xxx)が存在してないですよって言ってます。
原因は、
- ルート設定が間違ってる
- コントローラーのメソッド名にミスがある
などが考えられます。
ルート設定が間違ってる場合
例えば、routes\web.phpを開いて、
本当は、UploadController に飛ばすはずなのに、間違えてFormControllerを指定していたのように、コントローラー自体、もしくは、@の後のメソッド名自体が間違っていると、BadMethodCallというエラーが出ます。
まずは、ここが本当に間違ってないかをチェックしてみましょう。
コントローラーのメソッド名にミスがある
次に、実際に対応するコントローラーを開いてみます。
ルート側で、saveimg メソッドに飛ばすと設定したのに、それがコントローラーに無い、つまり、上の画像のように、saveimgなのに、savepostのようにfunction名(メソッド名)が間違ってると、このBadMethodCallエラーが出ます。
BadMethodCall つまり、「間違ったメソッド呼び出し」という事ですから、エラー文に出ているメソッド(funciton xxxの部分)に関連したどこかが間違って指定されているという事になります。
何をやってもエラーが直らない場合は、cdコマンドでLaravelプロジェクトフォルダに移動後、
php artisan config:cache
php artisan route:clear
php artisan view:clear
などのキャッシュ削除コマンドをコマンドプロンプトから打ってブラウザを更新してみると直る場合もあるよ。