Laravel入門バリデーション設定する

バリデーションとはユーザーが正しい情報を入力しているのかをチェックする非常に大事な役割を果たします。

ここをおろそかにしてしまうと、予期せぬエラーの元にもなってしまうので注意が必要です。

バリデーションの基本的な書き方

public function post(Request $request){
  $request->validate([
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
    'publish_at' => 'nullable|date',
  ]);
}

inputのname属性に対して個別に指定していきます。

複数の条件を指定する場合は | で区切ることによって指定できます。

だったのこれだけでバリデーションができるなんてさすがLaravelです(笑)

よく使用するバリデーションルールをピックアップしてまとめてきましたので参考にしてみてください。

コード説明
acceptedpostされてきたデータがyeson1trueのどれかであることをチェックできます
active_urlpostされてきたデータが有効なAかAAAAレコードであることをチェックできます
booleanpostされてきたデータが論理値として有効であることをチェックできます
confirmedpostされてきたデータがそのフィールド名+_confirmationフィールドと同じ値であることをチェックできます
datepostされてきたデータが日付であることをチェックできます
emailpostされてきたデータがメールアドレスとして正しいことをチェックできます
fileアップロードに成功したファイルであることをチェックできます
imageファイルが画像(jpg、png、bmp、gif、svg)であることをチェックできます
integerpostされてきたデータが整数値であることをチェックできます
nullable
postされてきたデータがnullであることをチェックできます
requiredpostされてきたデータが空でないことをチェックできます
stringpostされてきたデータが文字列であることをチェックできます

バリデーションエラーメッセージの表示

バリデーションしてもどこが間違っているのかユーザーにわからなければ謎解き状態になってしまうのでエラーメッセージを表示してあげる必要がありますね!

下記のコードを入力フォームの上あたりにコピペしてみてください!

だったのこれだけでエラーメッセージを表示することができるんです!

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

上のコードはbootstrapのスタイルが適応されているので、他のCSSフレームワークを使用している方はクラスを書き換えてあげて下さい。

オールドヘルパーの設定

バリデーションエラーで入力画面にリダイレクトした場合、入力欄はリセットされてしまい、ユーザーにとってかなり不便なものとなってしまいます。

Laravelにはオールドヘルパーという機能があり、リダイレクトされた際に入力された情報を保持することができます。

設定方法はとても簡単です。

input のvalueに

{{ old('インプットのname属性', '初期値') }}

上記のコードを記入します。たったこれだけです(笑)

oldの第2引数の初期値というのは、オールドヘルパーに値が何もセットされていない場合(1番初めに表示したい文字)

をセットすることができます。

もちろん第2引数は省略することも可能です。

<input name="name" value="{{ old("name") }}">

こんな感じのコードになります!

まとめ

今回はざっくりとLaravelのバリデーション について解説させていただきました!

案外こんなものなの?と思った方も多いのではないでしょうか?

Laravelフレームワークにはバリデーションを設定しやすいようにあらかじめ設定されているのでこのように簡単にバリデーションからエラーメッセージや入力補助まで実装することができます。

このあたりもフレームワークを使用するメリットですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です