実現したいこと
現在、Laravelの学習でAuthorモデルとAuthorControllerを作成しています。
ルートは以下のように設定しました。
発生している問題・分からないこと
発生しているエラー
ブラウザで /add を開くと以下のエラーになります。
エラーメッセージ
error
1未定義のメソッド App\Http\Controllers\AuthorController::add() の呼び出し 2
該当のソースコード
コントローラ // app/Http/Controllers/AuthorController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Author; class AuthorController extends Controller { public function index() { $authors = Author::latest()->get(); return view('author.index', compact('authors')); } public function add() { return view('author.add'); } public function store(Request $request) { $validated = $request->validate([ 'name' => ['required','string','max:255'], 'email' => ['required','email:rfc,dns','max:255','unique:authors,email'], ]); Author::create($validated); return redirect('/')->with('status', '登録しました。'); } }
// routes/web.php use Illuminate\Support\Facades\Route; use App\Http\Controllers\AuthorController; Route::get('/', [AuthorController::class, 'index']); Route::get('/add', [AuthorController::class, 'add']); Route::post('/add', [AuthorController::class, 'store']);
<!-- resources/views/author/add.blade.php --> <!doctype html> <html> <body> <h1>Add Author</h1> <form action="/add" method="post"> @csrf <p>Name: <input type="text" name="name"></p> <p>Email: <input type="email" name="email"></p> <p><input type="submit" value="Add"></p> </form> </body> </html>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
得られた結果
php artisan route:list では / は AuthorController@index、/add は AuthorController@add に正しく紐づいている。
しかしブラウザで /add にアクセスすると、次のようなエラーが出ます。
未定義のメソッド App\Http\Controllers\AuthorController::add() の呼び出し
つまり、コード上は add() メソッドを定義しているのに、Laravel が「未定義」と認識してしまっている状態です。
補足
特になし

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。