Laravel 8.80 からの機能でルートグループに controller メソッド
が追加されました。ネスト内にコントローラ名を書くことなしにルーティングすることができるので、今まで以上にスッキリした書き方が可能になります。
通常、グループのネスト内にコントローラ名を記述していました。
[before] web.php
use App\Http\Controllers\BlogController;
use Illuminate\Support\Facades\Route;
Route::prefix('blog')
->as('blog.')
->group(function () {
Route::get('/', [BlogController::class, 'index'])->name('index');
Route::get('/create', [BlogController::class, 'create'])->name('create');
Route::post('/', [BlogController::class, 'store'])->name('store');
Route::get('/{blog}', [BlogController::class, 'show'])->name('show');
});
Laravel 8.80 以降では controller メソッド
を使用してネスト内のコントローラ名の記述を省略可能になりました
[after] web.php
use App\Http\Controllers\BlogController;
use Illuminate\Support\Facades\Route;
Route::prefix('blog')
->as('blog.')
+ ->controller(BlogController::class) // controllerメソッドを追加
->group(function () {
+ // ネスト内のコントローラ名を省略できます
+ Route::get('/', 'index')->name('index');
+ Route::get('/create', 'create')->name('create');
+ Route::post('/', 'store')->name('store');
+ Route::get('/{blog}', 'show')->name('show');
});
ネスト内に同名のコントローラが多ければ、今回新しく追加されたcontroller メソッド
を使用してみると良いかもしれません。