Laravel で入力値チェックを実施します。

フォームの確認

viewファイルのform文を確認します。

MemoryMap/resources/views/insertInfo.blade.php

<form>
    <p class="label">出かけた場所</p>
    <input placeholder="例)東京スカイツリー" id="name" class="in" /><br>

    <input type="button" onClick="attrLatLngFromAddress()" value="検索する" class="btn2">

    <div id="map" class="map"></div>

    <p class="label">緯度</p>
    <input placeholder="緯度" id="ido" class="in" /><br>

    <p class="label">経度</p>
    <input placeholder="経度" id="keido" class="in" /><br>

    <p class="label">コメント</p>
    <input placeholder="コメントを記入して下さい" id="com" class="in" /><br>

    <p class="label">出かけた日</p>
    <input type="date" id="date" class="in" /><br>

    <p class="label">写真</p>
    <input type="file" name="file" id="file" class="in" /><br>

    <input type="submit" value="送信" class="btn">

</form>

コントローラーでバリデート処理

コントローラーのメソッドに、以下のコードを追記します。

     // 登録画面の入力値をDBに登録する
     public function insertInfo(Request $request){

        $this->validate($request, 
            ['name'   => 'required',
             'ido'    => 'required|numeric',
             'keido'  => 'required|numeric',
             'date'   => 'required',
            ],
            ['name.required' => ':attributeは必須です',
             'ido.required'  => ':attributeは必須です',
             'ido.numeric'   => ':attributeは数字を入力して下さい',
             'keido.required'  => ':attributeは必須です',
             'keido.numeric'   => ':attributeは数字を入力して下さい',
             'date.required'  => ':attributeは必須です',
            ],
            ['name' => '名前',
             'ido' => '緯度',
             'keido' => '経度',
             'date' => '日付',
            ]);

$this->validate を実行しています。

第1引数に $request を指定します。

第2引数にバリデーションルールを指定します。

laravel ではあらかじめ多くのルールが定義されています。required は必須チェック、numeric は数値であるかのチェックです。

この他にも多くのバリデーションルールがあります。

laravel5.6のバリデーションルール

第3引数にエラーメッセージを指定します。

第4引数に :attribute の内容を置き換えることができます。

バリデーションの設定は以上です。

画面のエラーメッセージの設定

コントローラーで設定したバリデーションチェックでエラーになった場合は、自動でformがある画面にエラーメッセージを返します。view側で受け取ることが出来ます。

@if (count($errors) > 0)
    <div>
        @foreach ($errors->all() as $error)
            <p class="error_message">{{ $error }}</p>
        @endforeach
    </div>
@endif

上記の記載でエラー数の分、pタグを埋め込むことが可能です。

送信ボタンを押下するとコントローラーのバリデーションが動き、viewファイルにエラーが返ってきます。