Laravelのバリデーションについての記事5つ!

LaravelLaravel

LaravelでValidation(バリデーション)をする方法について書いている記事を5つまとめてみました。
簡単な記事の説明と内部リンクを貼っています。

内容としては下記になります。

・通常のバリデーション
・フォームリクエストでのバリデーション
・よく使うバリデーションの標準ルール11個
・Ruleを作成して、独自のバリデーション実装する方法
・バリデーションメッセージの日本語化について
PR

Laravelでの通常のバリデーション

一番簡単にバリデーションする方法は、Controllerのメソッドでリクエストを受け取った時にvalidateメソッドを使用して、バリデーションする方法です。

public function requredTest(Request $request)
{
    $request->validate([
        'id' => 'required',
        'password' => 'required',
    ]);
}

例えば、上記のようにすると$requestにフォームのリクエストで送られてきた内容が格納されています。
この$requestインスタンスからvalidateメソッドを使用することで、バリデーションすることが可能です。

validateメソッドにはバリデーションするルールを指定します。
ルールは連想配列にして、左(キー)に画面のname属性の値、右(値)にバリデーションルールを書きます。
バリデーションにかかった場合は、後続の処理が行われずに呼び出し元にリダイレクトされてエラーメッセージを返します。

詳しい内容は、下記を参照してみてください。
LaravelでValidationする方法!
PR

FormRequest(フォームリクエスト)を使ったバリデーション

フォームリクエストを使ってバリデーションをすると、バリデーションの内容をファイルにまとめるため、Controllerの中身がすっきりします。
例えば、投稿内容を保存するようなリクエストがあった場合にRequestクラスを使わずに、フォームリクエストを作成してMemoCreateRequestを使うようにします。

public function create(MemoCreateRequest $request)
{
     // --- 保存処理:省略 ---
    return redirect()->route("top.index");
}

こうすると、リクエストが飛んできた時に直ぐにMemoCreateRequestクラス内でバリデーションしてくれます。
MemoCreateRequestのフォームリクエストの中身は下記のようになり、この中でバリデーションできます。

class MemoCreateRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
            // ここにルールを記述する
    }
}
ファイルの作成方法や詳しい内容は、下記を参照してみてください。
LaravelのFormRequestでバリデーションする!

バリデーションのルールについて

Laravelでバリデーションするときにバリデーションルールを書きます。

$request->validate([
    'user_name' => 'required|max:10|min:3'
]);

上記のように設定すると、フォームのinputタグのname属性にuser_nameの値が設定されている項目のバリデーションになります。
右側に書いている「required|max:10|min:3」がバリデーションのルールです。
ここでは「項目必須・文字数の上限が10文字まで・文字数の下限が3文字以上の入力必須」のバリデーションになります。

Laravelの標準で使えるバリデーションと、自分でルールを作成することもできます。

Laravelの標準でよく使うものをまとめてみたので、下記を参照してみてください。
Laravelのバリデーションで使える標準ルール11選!

独自のRule(ルール)を作成してバリデーションする

上記は標準のルールでしたが、独自のルールを作成することが可能です。
独自のルールファイルは下記のartisanコマンドで作成ができます。(TestRuleというルールファイルを作成します)

$ php artisan make:rule TestRule

作成したファイルは下記のようになります。

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class TestRule implements Rule
{
    public function __construct()
    {
    }

    public function passes($attribute, $value)
    {
        // ルールを書く
    }

    public function message()
    {
                // エラーの内容を書く
        return 'The validation error message.';
    }
}

passesメソッドにルールを書いて、messageメソッドにエラーだった場合の内容を書いて実装します。

作成したルールを呼び出す方法など、詳しくは下記を参照してみてください。
Laravelでバリデーションのルール(Rule)を追加する!

バリデーションメッセージの日本語化する

Laravelでバリデーションの内容を日本語化するのも、簡単に行うことができます。
メッセージファイルはresources/lang/enに配置されているので、resources/lang/jaディレクトリを作成して言語ファイルを作成しておきます。

その後にconfig/app.phplocale項目を修正するだけです。

詳しくは下記を参照してみてください。
Laravelでバリデーションを日本語化する方法!

コメント

Ads Blocker Image Powered by Code Help Pro

広告ブロッカーが検出されました。

ブラウザの拡張機能を使用して広告ブロックをしていることが確認できました。 ブラウザの広告ブロッカー機能を無効にしていただくか、codelikes.comをホワイトリストに追加し、更新をクリックしてください。 お手数ですが、よろしくお願いします🙇‍♂️
タイトルとURLをコピーしました