0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel 学習 (バリデーション)

Posted at

バリデーション

image.png

image.png

送信ボタンを押した際にバリデーションチェックをし、問題があればエラーメッセージを表示させます。

\routes\web.php
Route::get('/hello','App\Http\Controllers\HelloController@index');

Route::post('/hello','App\Http\Controllers\HelloController@post');
\app\Http\Controllers\HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

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

    public function post(Request $request) {
        $request->validate([
            'id' => 'integer|between:1, 10',
            'name' => 'required'
        ]);
        return view('hello.index', ['msg'=>'正常']);

    }
}
        $request->validate([
            'id' => 'integer|between:1, 10',
            'name' => 'required'
        ]);

ここでidは整数であり、1~10までであること。
nameは入力必須であることとしています。

integerは空値で送信するとintegerとして認識されずバリデーションエラーになります。
他にもemailか、日付かといったチェックもできます。

\resources\views\hello\index.blade.php
<html>
<body>
   <p>{{$msg}}</p>
   @if (count($errors) > 0)
      <p>異常</p>
   @endif
   <form action="hello" method="post">
      @csrf
      @if ($errors->has('id'))
         <p>msg:{{$errors->first('id')}}</p>
      @endif
      <label for="id">id</label>
      <input type="text" id="id" name="id" value="{{old('id')}}"><br>
      @if($errors->has('name'))
         <p>msg:{{$errors->first('name')}}</p>
      @endif
      <label for="name">name</label>
      <input type="text" id="name" name="name" value="{{old('name')}}">
      <button type="submit">送信</button>
   </form>
</body>
</html>
<form action="hello" method="post">

actionを「hello」にするか「/hello」にするかでURLが変わります。
hello: http://localhost/Laravelプロジェクト/public/hello
/hello: http://localhost/hello

{old('name')

oldを使うことで前回の送信値をセットできます。

バリデーションルール

項目が多かったのでchatGPTに出力してもらいました。

  1. accepted

    • true1yeson などの値を許可します。
  2. active_url

    • 有効なURLであることを確認します。
  3. after:date

    • 指定した日付以降の日付であることを確認します。
  4. after_or_equal:date

    • 指定した日付と同じかそれ以降の日付であることを確認します。
  5. alpha

    • アルファベットのみを許可します。
  6. alpha_dash

    • アルファベット、数字、ダッシュ(-)、アンダースコア(_)のみを許可します。
  7. alpha_num

    • アルファベットと数字のみを許可します。
  8. array

    • 配列であることを確認します。
  9. before:date

    • 指定した日付以前の日付であることを確認します。
  10. before_or_equal:date

    • 指定した日付と同じかそれ以前の日付であることを確認します。
  11. between:min,max

    • 指定した範囲内の値であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
  12. boolean

    • truefalse10のみを許可します。
  13. confirmed

    • 指定したフィールドと一致することを確認します。例えば、password フィールドに対応する password_confirmation フィールドが必要です。
  14. date

    • 有効な日付であることを確認します。
  15. date_equals:date

    • 指定した日付と同じであることを確認します。
  16. date_format:format

    • 指定した形式の日付であることを確認します。
  17. different:field

    • 他のフィールドと異なることを確認します。
  18. digits:value

    • 指定した桁数であることを確認します。
  19. digits_between:min,max

    • 指定した範囲の桁数であることを確認します。
  20. dimensions

    • 画像の幅、高さ、アスペクト比などを確認します。
  21. distinct

    • 配列内の要素が一意であることを確認します。
  22. email

    • 有効なメールアドレスであることを確認します。
  23. ends_with:values

    • 指定した値のいずれかで終わることを確認します。
  24. exists:table,column

    • データベース内に存在することを確認します。
  25. file

    • アップロードされたファイルであることを確認します。
  26. filled

    • 値が入力されていることを確認します。
  27. gt:field

    • 他のフィールドの値より大きいことを確認します。
  28. gte:field

    • 他のフィールドの値以上であることを確認します。
  29. image

    • 画像ファイル(jpeg、png、bmp、gif、svg、webp)であることを確認します。
  30. in:values

    • 指定した値のいずれかであることを確認します。
  31. integer

    • 整数であることを確認します。
  32. ip

    • 有効なIPアドレスであることを確認します。
  33. ipv4

    • 有効なIPv4アドレスであることを確認します。
  34. ipv6

    • 有効なIPv6アドレスであることを確認します。
  35. json

    • 有効なJSON文字列であることを確認します。
  36. lt:field

    • 他のフィールドの値より小さいことを確認します。
  37. lte:field

    • 他のフィールドの値以下であることを確認します。
  38. max:value

    • 最大値を超えないことを確認します(文字列の長さ、数値、ファイルサイズなど)。
  39. mimes:types

    • 指定したMIMEタイプのファイルであることを確認します(例:mimes:jpg,bmp,png)。
  40. mimetypes:types

    • 指定したファイルタイプであることを確認します(例:mimetypes:image/jpeg,audio/mp3)。
  41. min:value

    • 最小値以上であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
  42. not_in:values

    • 指定した値のいずれでもないことを確認します。
  43. not_regex:pattern

    • 正規表現パターンに一致しないことを確認します。
  44. nullable

    • フィールドがnullであることを許可します。
  45. numeric

    • 数字であることを確認します。
  46. present

    • フィールドが存在することを確認します。
  47. regex:pattern

    • 正規表現パターンに一致することを確認します。
  48. required

    • 必須項目です。
  49. required_if:anotherfield,value

    • 他のフィールドの値に応じて必須となります。
  50. required_unless:anotherfield,value

    • 他のフィールドの値に一致しない限り必須となります。
  51. required_with:fields

    • 指定したフィールドが存在する場合は必須となります。
  52. required_with_all:fields

    • 指定したすべてのフィールドが存在する場合は必須となります。
  53. required_without:fields

    • 指定したフィールドが存在しない場合は必須となります。
  54. required_without_all:fields

    • 指定したすべてのフィールドが存在しない場合は必須となります。
  55. same:field

    • 他のフィールドと一致することを確認します。
  56. size:value

    • サイズが指定した値であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
  57. starts_with:values

    • 指定した値のいずれかで始まることを確認します。
  58. string

    • 文字列であることを確認します。
  59. timezone

    • 有効なタイムゾーンであることを確認します。
  60. unique:table,column

    • データベース内で一意であることを確認します。
  61. url

    • 有効なURLであることを確認します。
  62. uuid

    • 有効なUUIDであることを確認します。

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?