バリデーション
送信ボタンを押した際にバリデーションチェックをし、問題があればエラーメッセージを表示させます。
Route::get('/hello','App\Http\Controllers\HelloController@index');
Route::post('/hello','App\Http\Controllers\HelloController@post');
<?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か、日付かといったチェックもできます。
<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に出力してもらいました。
-
accepted
-
true
、1
、yes
、on
などの値を許可します。
-
-
active_url
- 有効なURLであることを確認します。
-
after:date
- 指定した日付以降の日付であることを確認します。
-
after_or_equal:date
- 指定した日付と同じかそれ以降の日付であることを確認します。
-
alpha
- アルファベットのみを許可します。
-
alpha_dash
- アルファベット、数字、ダッシュ(-)、アンダースコア(_)のみを許可します。
-
alpha_num
- アルファベットと数字のみを許可します。
-
array
- 配列であることを確認します。
-
before:date
- 指定した日付以前の日付であることを確認します。
-
before_or_equal:date
- 指定した日付と同じかそれ以前の日付であることを確認します。
-
between:min,max
- 指定した範囲内の値であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
-
boolean
-
true
、false
、1
、0
のみを許可します。
-
-
confirmed
- 指定したフィールドと一致することを確認します。例えば、
password
フィールドに対応するpassword_confirmation
フィールドが必要です。
- 指定したフィールドと一致することを確認します。例えば、
-
date
- 有効な日付であることを確認します。
-
date_equals:date
- 指定した日付と同じであることを確認します。
-
date_format:format
- 指定した形式の日付であることを確認します。
-
different:field
- 他のフィールドと異なることを確認します。
-
digits:value
- 指定した桁数であることを確認します。
-
digits_between:min,max
- 指定した範囲の桁数であることを確認します。
-
dimensions
- 画像の幅、高さ、アスペクト比などを確認します。
-
distinct
- 配列内の要素が一意であることを確認します。
-
email
- 有効なメールアドレスであることを確認します。
-
ends_with:values
- 指定した値のいずれかで終わることを確認します。
-
exists:table,column
- データベース内に存在することを確認します。
-
file
- アップロードされたファイルであることを確認します。
-
filled
- 値が入力されていることを確認します。
-
gt:field
- 他のフィールドの値より大きいことを確認します。
-
gte:field
- 他のフィールドの値以上であることを確認します。
-
image
- 画像ファイル(jpeg、png、bmp、gif、svg、webp)であることを確認します。
-
in:values
- 指定した値のいずれかであることを確認します。
-
integer
- 整数であることを確認します。
-
ip
- 有効なIPアドレスであることを確認します。
-
ipv4
- 有効なIPv4アドレスであることを確認します。
-
ipv6
- 有効なIPv6アドレスであることを確認します。
-
json
- 有効なJSON文字列であることを確認します。
-
lt:field
- 他のフィールドの値より小さいことを確認します。
-
lte:field
- 他のフィールドの値以下であることを確認します。
-
max:value
- 最大値を超えないことを確認します(文字列の長さ、数値、ファイルサイズなど)。
-
mimes:types
- 指定したMIMEタイプのファイルであることを確認します(例:
mimes:jpg,bmp,png
)。
- 指定したMIMEタイプのファイルであることを確認します(例:
-
mimetypes:types
- 指定したファイルタイプであることを確認します(例:
mimetypes:image/jpeg,audio/mp3
)。
- 指定したファイルタイプであることを確認します(例:
-
min:value
- 最小値以上であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
-
not_in:values
- 指定した値のいずれでもないことを確認します。
-
not_regex:pattern
- 正規表現パターンに一致しないことを確認します。
-
nullable
- フィールドがnullであることを許可します。
-
numeric
- 数字であることを確認します。
-
present
- フィールドが存在することを確認します。
-
regex:pattern
- 正規表現パターンに一致することを確認します。
-
required
- 必須項目です。
-
required_if:anotherfield,value
- 他のフィールドの値に応じて必須となります。
-
required_unless:anotherfield,value
- 他のフィールドの値に一致しない限り必須となります。
-
required_with:fields
- 指定したフィールドが存在する場合は必須となります。
-
required_with_all:fields
- 指定したすべてのフィールドが存在する場合は必須となります。
-
required_without:fields
- 指定したフィールドが存在しない場合は必須となります。
-
required_without_all:fields
- 指定したすべてのフィールドが存在しない場合は必須となります。
-
same:field
- 他のフィールドと一致することを確認します。
-
size:value
- サイズが指定した値であることを確認します(文字列の長さ、数値、ファイルサイズなど)。
-
starts_with:values
- 指定した値のいずれかで始まることを確認します。
-
string
- 文字列であることを確認します。
-
timezone
- 有効なタイムゾーンであることを確認します。
-
unique:table,column
- データベース内で一意であることを確認します。
-
url
- 有効なURLであることを確認します。
-
uuid
- 有効なUUIDであることを確認します。
参考