 
                
                        読み込みが終了しない場合は、しばらく待つか、リロードを行なってください。
                    
                    
                        If loading does not finish, wait for a while or reload.
                    
                     
                            
                            エンジニア向けの情報を発信するブログです。
                            どなたでも発信できます。
                            お好きに利用していただれば幸いです。
                        
 
                
📁 root/app/Http/Controllers/ArticleController.php
<?php
use Illuminate\Support\Facades\Validator;
// ...省略
    public function create(Request $request)
    {
        // 👇こっから
        $validator = Validator::make($request->all(), [
            'title' => [
                'required',
                'string',
                'max:25',
            ],
            'content' => [
                'required',
                'string',
                'max:4000',
            ],
            'tag' => [
                'nullable',
                'string',
            ],
        ]);
        $validator->validate();
        // 👆ここまでのやつ
        $id = $request->get('id');
        $article = Article::find($id);
        
        //...省略
        return redirect()->route('article.show', ['id' => $article->id]);
    }
📁 root/resources/views/article/new.blade.php
@extends('layouts.app')
@section('content')
    <form action="{{route('article.create')}}" method="post">
        @csrf
        <input type="hidden" name="id" value="{{$id ?? null}}">
        <div class="form-row">
            <div class="form-group col-sm-6">
                <label>Title</label>
                <input
                    name="title"
                    type="text"
                    value="{{old('title', $title ?? null)}}"
                    class="form-control
                    @error ('title') is-invalid @enderror"
                >
                @error('title')
                    <ul class="invalid-feedback">
                        @foreach ($errors->get('title') as $message)
                            <li>
                                {{$message}}
                            </li>
                        @endforeach
                    </ul>
                @enderror
            </div>
            <div class="form-group col-sm-6">
                <label>Tag</label>
                <input
                    type="text"
                    name="tag"
                    value="{{old('tag', $tag ?? null)}}"
                    class="form-control @error ('tag') is-invalid @enderror"
                    placeholder="separated by ,"
                >
                @error('tag')
                    <ul class="invalid-feedback">
                        @foreach ($errors->get('tag') as $message)
                            <li>
                                {{$message}}
                            </li>
                        @endforeach
                    </ul>
                @enderror
            </div>
        </div>
        <div class="form-row">
            <div class="form-group col-sm-6">
                <label>Content</label>
                <textarea
                    name="content"
                    cols="30"
                    rows="10"
                    class="form-control @error ('content') is-invalid @enderror"
                >{{old('content', $content ?? null)}}</textarea>
                @error('content')
                    <ul class="invalid-feedback">
                        @foreach ($errors->get('content') as $message)
                            <li>
                                {{$message}}
                            </li>
                        @endforeach
                    </ul>
                @enderror
            </div>
            <div class="form-group col-sm-6 d-flex align-items-end">
                <input type="submit" class="btn btn-primary">
            </div>
        </div>
    </form>
@endsection

        $validator = Validator::make($request->all(), [
            'title' => [
                'required',
                'string',
                'max:25',
            ],
            'content' => [
                'required',
                'string',
                'max:4000',
            ],
            'tag' => [
                'nullable',
                'string',
            ],
            // 👇 これ
        ])->after(function (\Illuminate\Contracts\Validation\Validator $validator) {
            if (empty($validator->failed())) { // 👈 ルールの検証で問題なければ
                $params = $validator->getData(); // 👈 値を取得
                if ($params['title'] !== 'おすおす') {
                    // 👇 titleを指定してエラーメッセージを設定
                    $validator->errors()->add('title', 'おすおすちゃうやん');
                }
            }
        });
        $validator->validate();

        $validator = Validator::make($request->all(), [
            'title' => [
                'required',// 👈 これ
                'string',
                'max:25',
            ],
            'content' => [
                'required',
                'string',
                'max:4000',
            ],
            'tag' => [
                'nullable',
                'string',
            ],
        ],[
            'title.required' => '(゚∀゚ )おすおす',// 👈 これ
        ])->after(function (\Illuminate\Contracts\Validation\Validator $validator) {
            if (empty($validator->failed())) {
                $params = $validator->getData();
                if ($params['title'] !== 'おすおす') {
                    $validator->errors()->add('title', 'おすおすちゃうやん');
                }
            }
        });

        $validator = Validator::make($request->all(), [
            'title' => [
                'required',
                'string',
                'max:25',
            ],
            'content' => [
                'required',
                'string',
                'max:4000',
            ],
            'tag' => [
                'nullable',
                'string',
            ],
        ],[
                                 // 👇 これ
            'title.required' => ':attributeは(゚∀゚ )おすおす',
        ])->after(function (\Illuminate\Contracts\Validation\Validator $validator) {
            if (empty($validator->failed())) {
                $params = $validator->getData();
                if ($params['title'] !== 'おすおす') {
                    $validator->errors()->add('title', 'おすおすちゃうやん');
                }
            }
        });
:attribute
                <input
                    name="title" // 👈 こいつ
                    type="text"
                    value="{{old('title', $title ?? null)}}"
                    class="form-control
                    @error ('title') is-invalid @enderror"
                >

        ])->after(function (\Illuminate\Contracts\Validation\Validator $validator) {
            if (empty($validator->failed())) {
                $params = $validator->getData();
                if ($params['title'] !== 'おすおす') {
                                                        // 👇 これ
                    $validator->errors()->add('title', ':attributeはおすおすちゃうやん');
                }
            }
        });

        $validator = Validator::make($request->all(), [
            'title' => [
                'required',
                'string',
                'max:25',
            ],
            'content' => [
                'required',
                'string',
                'max:4000',
            ],
            'tag' => [
                'nullable',
                'string',
            ],
        ],[
            'title.required' => ':attributeは(゚∀゚ )おすおす',
        ])->after(function (\Illuminate\Contracts\Validation\Validator $validator) {
            if (empty($validator->failed())) {
                $params = $validator->getData();
                if ($params['title'] !== 'おすおす') {
                    $validator->errors()->add('title', 'おすおすちゃうやん');
                }
            }
            // 👇 これ
        })->setAttributeNames([
            'title' => 'タイトル',
        ]);
setAttributeNames()

$validator->validate();
// 👇リダイレクトする前に追加の処理をしたい場合下記のように書き換え
if ($validator->fails()) {
    // 追加の処理追加
    return redirect()
        ->back()// 👈 直前の画面へ
        ->withInput()// 👈 投げた値の保持
        ->withErrors($validator);// 👈 エラーメッセージの保持
}