技術ブログを開設する
ログイン
もっと気軽にアウトプットできる技術ブログプラットフォーム
この投稿は別サイトからのクロス投稿です(クロス元:https://crieit.net/posts/Laravel...

はじめに

この記事はQiitaの Laravel Advent Calendar 2018 の11日目です。

概要

何を書こうか迷いましたが、Laravelの大体のことは世の中書きつくされていて書くことが無さそうだったので、LaravelでResource形式のControllerの各メソッドについて、それぞれどれだけ薄くできるか書いてみることにしました。(動作確認はしてないので動かなかったらごめんなさい)

index

一覧ページの処理です。

    public function index()  
    {  
        $posts = Post::paginate();  
        return view('post.index', compact('posts'));  
    }  

create

新規登録フォームのページです。編集ページとformのテンプレートを使い回す場合はnewしただけのデータを渡しておいた方が良いかもしれません。

    public function create()  
    {  
        return view('post.create');  
    }  

store

新規登録フォームからPOSTして登録を実行する処理です。モデルの方でfillableguardedは設定しておきましょう。

    public function store(Request $request)  
    {  
        $post = new Post($request->all());  
        $post->save();  
        return redirect('posts');  
    }  

show

データの詳細ページです。

    public function show(Post $post)  
    {  
        return view('post.show', compact('post'));  
    }  

edit

編集フォームを表示するページです。ユーザーが自分のデータを編集する場合なら所有者チェックも必要ですね。

    public function edit(Post $post)  
    {  
        return view('post.edit', compact('post'));  
    }  

update

編集フォームからPOST(PUT)されて更新するページです。バリデーションが必要な場合はRequestを専用のものに置き換えましょう。

    public function update(Request $request, Post $post)  
    {  
        $post->fill($request->all());  
        $post->save();  
        return redirect("posts/{$post->id}");  
    }  

destroy

削除処理です。

    public function destroy(Post $post)  
    {  
        $post->delete();  
        return redirect('posts');  
    }  

まとめ

こんな感じで、薄い場合はとにかく薄くできるので面白いです。DIを利用することでテストもめちゃくちゃ楽ですし、Laravelはやはりフレームワークとしてなかなか良くできていると思います。

おまけ

メソッドはともかくあまりにも記事自体も薄いので、Laravelで開発している個人サービス(当サービス)の普段の運用方法を最近まとめたのでリンクでもしておきます。

Crieitの普段の運用方法について色々

関連記事

この記事へのコメント

まだコメントはありません
1
@alphabrendの技術ブログ
1
このエントリーをはてなブックマークに追加