質問するログイン新規登録
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

79閲覧

Laravelでコントローラーのメソッドを呼び出すと「未定義のメソッド」のエラーが出る

beeharaimobal

総合スコア2

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2025/10/03 06:20

0

0

実現したいこと

現在、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 が「未定義」と認識してしまっている状態です。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Ubuntu 24.04.3 LTS、PHP 8.3.6、Laravel 12.32.5で確認しました。

AuthorController.php、web.phpの冒頭に<?phpを追加してください。
その状態でブラウザから見ると

Class "App\Models\Author" not found

になります。

ここから先は、Authorクラスのソースが無いと調査できません。

投稿2025/10/04 03:22

hiroki-o

総合スコア1634

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問