Skip to content

Defining Rules

Valicomb provides three syntaxes for defining validation rules. Choose based on your use case.

SyntaxBest ForMethod
FluentReadability, custom messages per rulerule()
Rule-Based ArrayApplying same rule to many fieldsrules()
Field-Based ArrayGrouping all rules by fieldmapManyFieldsToRules()

Chain rules with ->rule(). Best for readability and adding custom messages.

$v = new Validator($_POST);
$v->rule('required', 'email')
->message('We need your email!')
->label('Email Address')
->rule('email', 'email')
->rule('lengthMin', 'password', 8);

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']
]
]);

Group by field with ->mapManyFieldsToRules(). Best when each field has multiple rules.

$v = new Validator($_POST);
$v->mapManyFieldsToRules([
'email' => ['required', 'email', ['lengthMax', 254]],
'password' => [
'required',
['lengthMin', 8, 'message' => 'Password too short']
]
]);

For a single field, use mapOneFieldToRules():

$v->mapOneFieldToRules('email', ['required', 'email']);

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.


All syntaxes support applying one rule to multiple fields:

// Fluent
$v->rule('required', ['email', 'name', 'password']);
// Array
$v->rules(['required' => ['email', 'name', 'password']]);