Laravel 9で投稿のCRUD (Create, Read, Update, Delete) 機能のルーティングを作成していきます。
親記事
Dockerで環境構築して Laravel 9で CRUD 機能を作る
2022年03月15日
Laravel前記事
Laravel9 投稿 CRUD 機能を作成 〜 モデルを作成
2023年01月10日
Laravel環境
- macOS
- Laravel v9.0.2
- Docker 20.10.12
ルーティング
routes/web.php ファイルに定義していきます。
Laravel 9 ではコントローラーをグループ化できるようになっています。
ルーティング
use App\Http\Controllers\PostController;
Route::controller(PostController::class)->prefix('posts')->name('posts')->group(function() {
Route::get('/', 'list');
Route::get('/create', 'create')->name('.create');
Route::post('/create', 'store')->name('.store');
Route::get('/{post}', 'show')->name('.show');
Route::get('/{post}/edit', 'edit')->name('.edit');
Route::put('/{post}', 'update')->name('.update');
Route::delete('/{post}', 'destroy')->name('.destroy');
});
動詞 | URI | ルート名 | アクション | |
GET | /posts | posts.list | list() | 投稿一覧ページ |
GET | /posts/create | posts.create | create() | 投稿作成ページ |
POST | /posts/create | – | store() | 投稿を保存 |
GET | /posts/{post} | posts.show | show() | 投稿を表示ページ |
GET | /posts/{post}/edit | posts.edit | edit() | 投稿を編集ページ |
PUT | /posts/{post} | – | update() | 編集を保存 |
DELETE | /posts/{post} | – | destroy() | 投稿を削除 |
ルートが定義できたので、それに対応するPostControllerのメソッドを用意します。
コントローラー
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function __construct()
{
}
public function list()
{
}
public function create()
{
}
public function store()
{
}
public function show()
{
}
public function edit()
{
}
public function update()
{
}
public function destroy()
{
}
}
ミドルウェア
PostControllerの コンストラクタでミドルウェアを割り当てます。一覧表示の list、投稿表示 show 、以外のアクションはログイン済みのユーザーのみできることにします。
public function __construct()
{
$this->middleware('auth')->except(['list', 'show']);
}
次の記事
Laravel 9 投稿CRUD 機能を作成する〜 投稿リスト
2023年01月10日
Laravel