📝

Laravelフォームリクエストで失敗時リダイレクトさせない

2023/01/19に公開約800字

概要

通常laravelのフォームリクエストを使用したバリデーションをした際、失敗した時にリダイレクトされHTMLレスポンスが返ってきます。

ここではリダイレクトさせず、自前の処理がしたい場合の方法を紹介します。

環境

laravel: 9.23.0 

ApiRequestクラスの作成

バリデーション失敗のメッセージと内容をjson形式で返却するようにしています。

abstract class ApiRequest extends FormRequest
{
    /**
     * Handle a failed validation attempt.
     *
     * @param Validator $validator
     * @return Illuminate\Http\JsonResponse;
     */
    protected function failedValidation(Validator $validator): JsonResponse
    {
        return response()->json([
           'message' => 'failed to validation',
           'errors' => $validator->errors()
        ]);
    }
}

FormRequestに継承する

先ほど作成したapiRequestクラスをFormRequestクラスに継承します。

use xxx\ApiRequest;

class StoreItemRequest extends ApiRequest {}

これで、リダイレクトせずに自前のロジック処理をすることが可能です。

Discussion

ログインするとコメントできます