こんな画面が出た。
私自身あまり詳しくないのですが、調べていくと[ use ]というのを使ってパスを記述する必要があるそうです。
laravelのバージョンは10です。
エラー出たときの状態
wep.php
Route::get('/hello', [HelloController::class, 'index']);
HelloController.php
class HelloController extends Controller
{
public function index()
{
return view('hello');
}
}
hello.blade.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ハロー</title>
</head>
<body>
<h1>ハロー!ハロー!</h1>
</body>
</html>
対処法
2つあります。
最初の対処法がおすすめです。
① useでパスを省略
変えるのはweb.phpだけ。
web.php
<?php
use App\Http\Controllers\HelloController; ←これを追加
~省略~
Route::get('/hello', [HelloController::class, 'index']);
useは <?php の真下に書きます。
デフォルトで他のuseが記述されてるはずなのでそこに一緒に記述しましょう。
useでパスを省略しました。
laravelのuseについてはこの方の記事を参考にしました。
② パスを全部書く
web.php
Route::get('/hello', [App\Http\Controllers\HelloController::class, 'index']);
このようにuse使って省略せずに全部ここでパスを書いちゃうのもアリ。
さっきのuseの後の記述をRoute::getに持ってきただけですね。
公式ドキュメントも見ておくといいかも↓
ルーティング 10.x Laravel
まとめ
参考にした記事では当たり前のようにパス省略しているので知らなかった。
そういうのは先に言ってほしい。