メッセージの書き込み

メッセージ一覧の表示ができたので、 続いてメッセージの書き込みができるようにしましょう。

書き込みフォームの追加

ビューに投稿用のフォームを追加します。

index.blade.php

@extends('layouts.default')

@section('title', $title)

@section('content')
    <h1>{{ $title }}</h1>

    {{-- 以下にフォームを追記します。 --}}
    <form method="post" action="{{ url('/messages') }}">
        {{-- LaravelではCSRF対策のため以下の一行が必須です。 --}}
        {{ csrf_field() }}
        <div>
            <label>
                名前:
                <input type="text" name="name" class="name_field" placeholder="お名前を入力">
            </label>
        </div>

        <div>
            <label>
                コメント:
                <input type="text" name="body" class="comment_field" placeholder="コメントを入力">
            </label>
        </div>

        <div>
            <input type="submit" value="投稿">
        </div>
    </form>

    <ul>
        @forelse($messages as $message)
            <li>{{ $message->name }}: {{ $message->body }}  {{ $message->created_at }}</li>
        @empty
            <li>メッセージはありません。</li>
        @endforelse
    </ul>
@endsection

書き込み用のルーティングを追加

作成したフォームは /messages に対してPOSTでアクセスを行います。 web.phpに該当のルートを追加します。

web.php

Route::post('/messages', 'MessagesController@create');

上記の内容を追記しておきましょう。

書き込み用のアクションを追加

では、続いて書き込み用のアクションである create を作成しましょう。

MessagesController


    public function create(Request $request){

        // Messageモデルを利用して空のMessageオブジェクトを作成
        $message = new \App\Message;

        // フォームから送られた値でnameとbodyを設定
        $message->name = $request->name;
        $message->body = $request->body;

        // messagesテーブルにINSERT
        $message->save();

        // メッセージ一覧ページにリダイレクト
        return redirect('/messages');
    }

これで準備は完了です。 フォームから名前とコメントを入力すると、書き込みがおこなわれます。 確認してみましょう。

results matching ""

    No results matching ""