Comparison Rules
Comparison validation rules check field presence and compare values between fields.
Rules Reference
Section titled “Rules Reference”| Rule | Parameters | Example | Error Message |
|---|---|---|---|
required | allowEmpty? | $v->rule('required', 'field') | {field} is required |
equals | otherField | $v->rule('equals', 'field', 'other') | {field} must match {0} |
different | otherField | $v->rule('different', 'field', 'other') | {field} must be different from {0} |
accepted | — | $v->rule('accepted', 'field') | {field} must be accepted |
Note: Parameters marked with
?are optional.
Parameter Details
Section titled “Parameter Details”required
Section titled “required”Empty values: null, empty string '', or not set in data array.
// Apply to multiple fields$v->rule('required', ['email', 'name', 'password']);
// Allow empty if key exists$v->rule('required', 'field', true);equals / different
Section titled “equals / different”Uses strict comparison (===) to prevent type juggling attacks. Supports dot notation for nested fields.
accepted
Section titled “accepted”Valid acceptance values: 'yes', 'on', 1, '1', true
Complete Examples
Section titled “Complete Examples”Valicomb supports two syntax styles: rule-based (map rules to fields) and field-based (map fields to rules).
Rule-Based Array Syntax
Section titled “Rule-Based Array Syntax”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->rules([ 'required' => [ ['username'], ['email'], ['password'], ['password_confirmation'] ], 'equals' => [ ['password_confirmation', 'password'], ['email_confirmation', 'email'] ], 'different' => [ ['new_password', 'current_password'], ['new_email', 'current_email'] ], 'accepted' => [ ['terms_of_service'], ['privacy_policy'] ]]);
$v->validate();Field-Based Mapping
Section titled “Field-Based Mapping”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->mapManyFieldsToRules([ 'username' => ['required', ['lengthBetween', 3, 20]], 'email' => ['required', 'email'], 'email_confirmation' => ['required', ['equals', 'email']], 'password' => ['required', ['lengthMin', 8]], 'password_confirmation' => ['required', ['equals', 'password']], 'new_password' => ['required', ['different', 'current_password']], 'terms_of_service' => ['accepted'], 'newsletter' => ['optional', 'accepted']]);
$v->validate();