メッセージの書き込み
メッセージ一覧の表示ができたので、 続いてメッセージの書き込みができるようにしましょう。
書き込みフォームの追加
ビューに投稿用のフォームを追加します。
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');
}
これで準備は完了です。 フォームから名前とコメントを入力すると、書き込みがおこなわれます。 確認してみましょう。