(2022/3/20)Laravel環境 7日目
まだControllerのルーティングで詰まっており。
Bookコントローラをルーティングする場合、
web.phpに
Route::resource('book', 'BookController');
と記述すると、
Illuminate\Contracts\Container\BindingResolutionException
Target class [BookController] does not exist.
なんやかんやで、↓の記述にすると、
Route::get('/book', [BookController::class, 'index']);
indexは通るが、editが通らない。
'edit'を記述すると、上書きされている感じ。
LaravelでRoute::resourceを使うときに気をつけること - Qiita
↑から、ルーティングを限定する記述
Route::resource('book', 'BookController', ['only' => ['index', 'edit'] ]);
しても変わらず。
適当に組み合わせて
Route::get('/book', [BookController::class, ['only' => ['index', 'edit'] ] ]);
などとしても、
Function () does not eixist
となり、悶絶。
もがいていきます。
今回インストールしたのはLaravel8
Laravel7までは、ルーティングを記述する routes/web.phpファイルにデフォルトの状態でコントローラの名前空間(App\\Http\\Controllers)が適用されていたのですが、Laravel8でこのデフォルトの設定が外れたためです。
とある。ファイル上部で
use App\Http\Controllers\BookController;
を記述してもダメだったが、
Route::resource('book', 'App\Http\Controllers\BookController');
とresource関数呼び出し時に完全なクラスパスを指定したら通った!
長かった。。。
Laravel入門 - 使い方チュートリアル - - Qiita
ずっと参考にしてるサイト、ようやく先に進めます。