この記事はQiitaの Laravel Advent Calendar 2018 の11日目です。
何を書こうか迷いましたが、Laravelの大体のことは世の中書きつくされていて書くことが無さそうだったので、LaravelでResource形式のControllerの各メソッドについて、それぞれどれだけ薄くできるか書いてみることにしました。(動作確認はしてないので動かなかったらごめんなさい)
一覧ページの処理です。
public function index()
{
$posts = Post::paginate();
return view('post.index', compact('posts'));
}
新規登録フォームのページです。編集ページとformのテンプレートを使い回す場合はnew
しただけのデータを渡しておいた方が良いかもしれません。
public function create()
{
return view('post.create');
}
新規登録フォームからPOSTして登録を実行する処理です。モデルの方でfillable
やguarded
は設定しておきましょう。
public function store(Request $request)
{
$post = new Post($request->all());
$post->save();
return redirect('posts');
}
データの詳細ページです。
public function show(Post $post)
{
return view('post.show', compact('post'));
}
編集フォームを表示するページです。ユーザーが自分のデータを編集する場合なら所有者チェックも必要ですね。
public function edit(Post $post)
{
return view('post.edit', compact('post'));
}
編集フォームからPOST(PUT)されて更新するページです。バリデーションが必要な場合はRequestを専用のものに置き換えましょう。
public function update(Request $request, Post $post)
{
$post->fill($request->all());
$post->save();
return redirect("posts/{$post->id}");
}
削除処理です。
public function destroy(Post $post)
{
$post->delete();
return redirect('posts');
}
こんな感じで、薄い場合はとにかく薄くできるので面白いです。DIを利用することでテストもめちゃくちゃ楽ですし、Laravelはやはりフレームワークとしてなかなか良くできていると思います。
メソッドはともかくあまりにも記事自体も薄いので、Laravelで開発している個人サービス(当サービス)の普段の運用方法を最近まとめたのでリンクでもしておきます。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント