LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel】validateメソッドを使ったバリデーション処理

Last updated at Posted at 2023-01-22

はじめに

validateメソッドを使ったバリデーション処理について説明します。
Laravelのバージョンは9.43.0です。

使い方

validateメソッドは、コントローラの基底クラスに組み込まれているValidateRequestsというトレイト(メンバーをまとめてクラスに追加するもの)に用意されている機能です。
第1引数にチェックする項目、第2引数に検証する設定情報を配列にまとめたものを渡します。

// contorollerファイル
public function post(Request $request) {
    // 検証ルール
	$validate_rule = [
    	'inputタグのname' => 検証ルール1|検証ルール2,
	];
	// validateメソッド呼び出し
	$this->validate($request, [検証ルールの配列]);
}

使用例

コントローラは下記になります。
validateメソッドの第1引数にチェック項目(今回はリクエスト)、第2引数にバリデーションルールを渡します。

// controller

class HelloController extends Controller
{
    public function index(Request $request)
    {
        return view('hello.index', ['msg'=>'フォームを入力:']);
    }

    public function post(Request $request)
    {
        $validate_rule = [
            'name' => 'required|between:0,150',
        ];
				
				// validateメソッド使用
        $this->validate($request, $validate_rule);
        return view('hello.index',['msg' => '正しく入力されました!']);
    }
}

viewファイルは下記になります。
@errorディレクティブは、()に指定した項目のエラーをチェックします。
下記の場合は、nameをチェックします。
このディレクティブ内では、発生したエラーメッセージを$messageという変数を渡します。

// viewファイル
<p>{{ $msg }}</p>
@if (count($errors) > 0)
    <p>入力に問題があります再入力してください</p>
@endif
<form actoin="/hello" method="post">
	@csrf

	<!-- バリデーションエラーのチェック -->
    @error('name')
    	<p>ERROR</p><br>
		<p>{{ $message }}</p>
    @enderror

<p>name: </p><input type="text" name="name" value="{{ old('mail') }}">
</form>

ちなみに

バリデーション結果の反映処理に関して
Laravelのバリデーション機能が自動に行っており、validateを実行して問題がなければそのまま処理の続きを行う。しかしvalidate時に問題が発生すると例外が発生し、その場でフォームページを表示するレスポンスが生成されてクライアントに返信される。したがって、その後に用意された処理は実行されず、フォームが再表示される。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0