Tailwind CSS

[Laravel][備忘録]バリデーション

コントローラー

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
    public function create(){
        return view('post.create');
    }
    public function store(Request $request){
        $validated = $request->validate([
            'title' => 'required|max:20',
            'body'  => 'required|max:400',
        ]);
        $post = Post::create($validated);
        /*
        saveを使う場合
        $post = new Post();
        $post->title = $validated['title'];
        $post->body = $validated['body'];
        $post->save();
        */
        /*
        withを使わない場合
        $request->session()->flash('message','保存しました');
        return back();
        */
        return back()->with('message','保存しました');
    }
}

 

表示側

<div class="max-w-7xl">
    @if(session('message'))
        <div class="text-red-600">
            {{ session('message') }}
        </div>
    @endif
    <form method="post" action="{{ route('post.write') }}">
        @csrf
        <div>
            <x-input-error :messages="$errors->get('title')" class="mt-2" />
            <input type="text" name="title" class="w-auto py-2 border border-gray-300 rounded-md" id="title" value="{{old('title')}}">
        </div>

        <div>
            <x-input-error :messages="$errors->get('body')" class="mt-2" />
            <textarea name="body" class="w-auto py-22 border border-gray-300 rounded-md" id="body" cols="30" rows="5">{{old('body')}}</textarea>
        </div>

        <x-primary-button>{{ __('送信する') }}</x-primary-button>
    </form>
</div>