Laravel:Controllerのコピー保存は要注意!
Controllerのコピー保存が原因のエラーに遭遇しました
理由を探し当てるのに約1時間を要したので備忘録として保存です。
昨日まで表示できていたページがエラーで表示できなくなりました。
【Method ○○○ does not exist 】メソッド○○○が存在しません。
昨日まで表示てきてたので更新でなんかやらかしたか?と思い保存していたバックアップで上書き実行。
これで表示が戻れば原因の特定に近づけると思っていたのですが、残念。戻りませんでした。
昨日行った事と言えば、シーダーの作成と多対多リレーションのページ作成くらい。
う~ん、全く不明。という事でGoogle先生に教えていただきました。
まずはエラーをコピーしてそのまま検索!
Method ○○○ does not existをコピー。
○○○は私の作ったメソッド名なのでこいつを省いて『Method does not exist』+『Laravel』で検索実行
laravel5.1のルーティングとコントローラの呼び出しについて質問です。
[ApexCode]不可解なMethod does not exist or incorrect signature
上記2つの記事より理由を推測、解決にこぎつけました。
鍵は以下の情報
- composer dump-autoload
- 組み込みクラスと同名のユーザー定義クラスが存在しており、そちらを参照しようとしていたせいだった。
そういえば昨日、シーディングの実行前に『composer dump-autoload』実行してました。
オートローダーに誤ったデータが登録された?
『composer dump-autoload』再実行で原因判明
原因はController変更時にバックアップとして作成した旧○○○Controllerの残骸でした。
昨日行ったdump-autoloadでこのバックアップ情報も読み込んだため同名のユーザー定義クラスが重複。「どっち読めばいいの??」となっていたようです。
なるほど。
早速修正に入ります。
旧○○○Controllerを削除&composer dump-autoload再実行で解決
バックアップのコントローラーを削除して『composer dump-autoload』を再実行!
無事エラーなくページが表示されました。
こういうのって理由がわかれば早いんですけど、そこにたどり着くまでが大変なんですよね。
知識が欲しいです。
-
前の記事
Laravel:多対多リレーション作成時の注意点 2018.11.21
-
次の記事
プログラミングの醍醐味! 2018.11.27
コメントを残す