LaravelでValidation(バリデーション)をする方法について書いている記事を5つまとめてみました。
簡単な記事の説明と内部リンクを貼っています。
内容としては下記になります。
・フォームリクエストでのバリデーション
・よく使うバリデーションの標準ルール11個
・Ruleを作成して、独自のバリデーション実装する方法
・バリデーションメッセージの日本語化について
Laravelでの通常のバリデーション
一番簡単にバリデーションする方法は、Controllerのメソッドでリクエストを受け取った時にvalidate
メソッドを使用して、バリデーションする方法です。
public function requredTest(Request $request)
{
$request->validate([
'id' => 'required',
'password' => 'required',
]);
}
例えば、上記のようにすると$request
にフォームのリクエストで送られてきた内容が格納されています。
この$request
インスタンスからvalidate
メソッドを使用することで、バリデーションすることが可能です。
validate
メソッドにはバリデーションするルールを指定します。
ルールは連想配列にして、左(キー)に画面のname属性の値、右(値)にバリデーションルールを書きます。
バリデーションにかかった場合は、後続の処理が行われずに呼び出し元にリダイレクトされてエラーメッセージを返します。
・LaravelでValidationする方法!
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のバリデーションで使える標準ルール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.php
のlocale
項目を修正するだけです。
・Laravelでバリデーションを日本語化する方法!
コメント