📝
Laravelフォームリクエストで失敗時リダイレクトさせない
概要
通常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