LaravelにてJSのリクエストでValidationさせる場合

例としてファイルのアップロード

サーバー側のController

 // バリデーションルールを定義
 $validator = Validator::make($request->all(), [
    'photo' => 'required|file|image|mimes:jpeg,png,jpg|max:2048',
 ]);

 if ($validator->fails()) {
    // バリデーションエラーをJSON形式で返却
    return response()->json([
    'errors' => $validator->errors(),
    ], 422);  // 422はステータスコード
 }

クライアント側のJS

try {
    const response = await fetch('upload', {
        method: 'POST',
        headers: {
            'X-CSRF-TOKEN': csrfToken,
        },
        body: formData,
    });

    if (response.ok) {
        alert('アップロード成功!');
    } else {
        // レスポンスからエラー内容を取得
        const errorData = await response.json();
        if (errorData.errors) {
            // バリデーションエラーがある場合、内容を表示
            const errorMessages = Object.values(errorData.errors).flat().join('\n');
            alert('アップロードが失敗しました:\n' + errorMessages);
        } else {
            // その他のエラー
            alert('アップロードが失敗しました: ' + response.statusText);
        }
    }
} catch (error) {
    alert('エラーが発生しました: ' + error.message);
}

投稿者プロフィール

TakaharaRyuji
PAGE TOP