Defining Rules
Valicomb provides four syntaxes for defining validation rules. This page progresses from basic usage to advanced patterns.
Quick Comparison
Section titled “Quick Comparison”| Syntax | Best For | Method |
|---|---|---|
| Field-Based Array | Grouping all rules by field | forFields() |
| Fluent Field Builder | IDE autocomplete, per-field context | field() |
| Fluent Rule Chain | Adding custom messages per rule | rule() |
| Rule-Based Array | Applying same rule to many fields | rules() |
Basics
Section titled “Basics”Field-Based Array Syntax (Recommended)
Section titled “Field-Based Array Syntax (Recommended)”Group by field with ->forFields(). This reads naturally as “for this field, apply these rules”:
$v = new Validator($_POST);$v->forFields([ 'email' => ['required', 'email', ['lengthMax', 254]], 'password' => [ 'required', ['lengthMin', 8, 'message' => 'Password too short'] ]]);Fluent Field Builder
Section titled “Fluent Field Builder”Chain validation methods directly on fields with full IDE autocomplete support:
$v = new Validator($_POST);
$v->field('email') ->required() ->email() ->lengthMax(254);
$v->field('password') ->required() ->lengthMin(8);Use message() and label() for customization:
$v->field('email') ->label('Email Address') ->required()->message('We need your email') ->email();See the Fluent API page for the complete method reference.
Fluent Rule Chain Syntax
Section titled “Fluent Rule Chain Syntax”Chain rules with ->rule(). Best for adding custom messages and labels inline.
$v = new Validator($_POST);$v->rule('required', 'email') ->message('We need your email!') ->label('Email Address') ->rule('email', 'email') ->rule('lengthMin', 'password', 8);Chaining Multiple Rules
Section titled “Chaining Multiple Rules”Chain as many rules as needed on a single field:
$v = new Validator(['email' => 'test@example.com']);$v->rule('required', 'email') ->rule('email', 'email') ->rule('lengthMax', 'email', 254);$v->validate();Rule-Based Array Syntax
Section titled “Rule-Based Array Syntax”Group by rule type with ->rules(). Best when applying the same rule to many fields.
$v = new Validator($_POST);$v->rules([ 'required' => ['name', 'email', 'password'], 'email' => 'email', 'lengthMin' => [ ['username', 3], ['password', 8, 'message' => 'Password too short'] ]]);Intermediate
Section titled “Intermediate”Custom Messages
Section titled “Custom Messages”All syntaxes support inline custom messages using the 'message' key:
// Array syntaxes['lengthMin', 8, 'message' => 'Password too short']
// Fluent syntax$v->rule('lengthMin', 'password', 8)->message('Password too short');See Error Messages for placeholders, labels, and more options.
Applying Rules to Multiple Fields
Section titled “Applying Rules to Multiple Fields”All syntaxes support applying one rule to multiple fields:
// Fluent$v->rule('required', ['email', 'name', 'password']);
// Array$v->rules(['required' => ['email', 'name', 'password']]);Advanced
Section titled “Advanced”Mixing Syntaxes
Section titled “Mixing Syntaxes”You can combine array and fluent syntaxes in the same validator:
$v = new Validator($_POST);
// Start with array syntax$v->rules([ 'required' => ['name', 'email'], 'email' => 'email']);
// Add more rules with fluent syntax$v->rule('lengthMin', 'name', 2) ->rule('min', 'age', 18);Valitron Compatibility
Section titled “Valitron Compatibility”For developers migrating from Valitron, these deprecated method aliases are available:
// Deprecated - use forFields() instead$v->mapFieldRules('email', ['required', 'email']);$v->mapFieldsRules([...]);$v->mapOneFieldToRules('email', [...]);Next Steps
Section titled “Next Steps”- Error Messages - Custom messages, labels, and placeholders
- Custom Rules - Create your own validation rules
- Validation Rules - Explore all 53 built-in rules