3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelでJSONのValidationを行う簡単な方法

Last updated at Posted at 2021-12-07

目的

JavaScriptのSPAアプリからPOSTでJSONをサーバーに送るときに、そのJSONの内容でCRUDを行う前に確認する。

試して失敗したこと

Illuminate\Http\Requestのvalidate関数で下記の通りやってみたら、

$validate = $request->validate([
            "title" => ["required", "unique:posts"],
            "contents" => ["required"],
        ]);

JavaScriptアプリ側にValidationが失敗した時に、自動でHTMLのページが送られていたようで、Errorの内容をJSONにて送ることができなくなっていたのです。

解決法

Illuminate\Support\Facades\Validatorを使い、自前でValidatorを作ることにします。

$validator = Validator::make($request->all(), [
            "title" => ["required", "unique:posts"],
            "contents" => ["required"],
        ]);

そして、失敗した理由などをJavaScriptアプリにこうやって返せるわけ。
Error Codeも400にすることでアプリ側に何らかのエラーが発生したことが伝わります(社内バックオフィスからマサカリが飛んできたので追記)


$validator = Validator::make($request->all(), [
            "title" => ["required", "unique:posts"],
            "contents" => ["required"],
        ]);

        if ($validator->fails()) {
            return response()->json(["results" => "failed", "errors" => $validator->errors()], 400);
        }

JavaScriptではこういうObjectに変換され、UXに活かせる。

スクリーンショット 2021-12-07 17.39.16.png

まとめ

ということで、自前でValidatorを作ることで、LaravelのValidation機能を利用しつつ、特殊な用途に合わせてJSONを返すこともできるのです。

LaravelはSPAアプリ開発においては非常に上等だということがわかりますね。

3
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?