- カテゴリ: validation
- 掲載バージョン: Laravel 12・PHP 8.4
- ルール名: accepted
- 関連: required, boolean, declined
- 変更履歴: なし
要点(TL;DR)
- 利用規約や同意チェックのためのバリデーション
- 値が yes / on / 1 / true など「受諾」を示す場合のみ通過
- 未チェックのチェックボックスはリクエスト自体が送信されない点に注意
概要
accepted は、ユーザーが「同意した」「承認した」ことを示す入力かどうかを検証するためのバリデーションルール。
利用規約への同意チェックボックスや、年齢確認などで使われる。
構文 / シグネチャ
'terms' => ['accepted']
- 引数: なし
- 戻り値: バリデーション成功時は通過、失敗時は ValidationException
- 例外/副作用: なし
使用例
最小例
use Illuminate\Http\Request;
public function store(Request $request)
{
$validated = $request->validate([
'terms' => ['accepted'],
]);
// 同意済みとして処理
}
実務例
use Illuminate\Http\Request;
use App\Models\User;
public function register(Request $request)
{
$data = $request->validate([
'name' => ['required', 'string'],
'email' => ['required', 'email'],
'terms' => ['accepted'],
]);
User::create($data);
}
HTML 側の例:
<label>
<input type="checkbox" name="terms" value="1">
利用規約に同意します
</label>
よくある落とし穴・注意
- チェックボックスが未チェックの場合、リクエストにキー自体が含まれない
- accepted は required を暗黙的に含むため、通常は required を併用しなくてよい
- false, 0, off, no は失敗になる
代替・関連APIとの比較
- required
単に値の存在だけを確認したい場合に使用 - boolean
true / false として扱いたい場合に使用 - declined
明示的に「拒否されている」ことを検証したい場合に使用
テスト例(Pest)
it('accepts terms', function () {
$response = $this->post('/register', [
'name' => 'Test',
'email' => 'test@example.com',
'terms' => '1',
]);
$response->assertSessionHasNoErrors();
});
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 |
|---|---|---|
| terms が必須エラーになる | チェックボックス未送信 | name 属性と value を確認 |
| true を送っているのに失敗 | boolean true を期待している | accepted は文字列/数値判定 |
参考リンク
- Laravel公式ドキュメント Validation: Accepted
https://laravel.com/docs/validation#rule-accepted

