accepted — 「同意・承認」を表すバリデーション

validation
  • カテゴリ: 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 は文字列/数値判定

参考リンク

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする