atk4 / validate
Agile Data - Validator add-on
Installs: 8 079
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 10
Forks: 2
Open Issues: 0
Requires
- php: >=7.4 <8.4
- atk4/data: ~5.0.0
- vlucas/valitron: ^1.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-12-08 11:27:58 UTC
README
This is validator add-on for Agile Data (https://github.com/atk4/data).
It uses https://github.com/vlucas/valitron under the hood.
Usage
// add model fields $model->addField('name'); $model->addField('age', ['type' => 'number']); $model->addField('type', ['required' => true, 'enum' => ['dog', 'ball']]); $model->addField('tail_length', ['type' => 'number']); // add validator to your model // also will register itself as $model->validator property $v = new \Atk4\Validate\Validator($model); // set simple validation rule for one field // ->rule($field, $rules) $v->rule('name', [ 'required', ['lengthMin', 3] ]); // set multiple validation rules in one shot // ->rules($array_of_rules) // [field=>rules] $v->rules([ 'name' => ['required', ['lengthMin',3]], 'age' => ['integer', ['min',0], ['max',99]], 'tail_length' => ['integer', ['min',0]], ]); // set validation rules based on value of another field // if type=dog, then sets fields age and tail_length as required // ->if($condition, $then_array_of_rules, $else_array_of_rules) $v->if(['type'=>'dog'], [ 'age' => ['required'], 'tail_length' => ['required'], ], [ 'tail_length' => [ ['equals',''] ], // balls don't have tail ]); // you can also pass multiple conditions which will be treated as AND conditions $v->if(['type'=>'dog', 'age'=>50], $rules_if_true, $rules_if_false); // you can also set custom error message like this: $v->rule('age', [ ['min', 3, 'message'=>'Common! {field} to small'] ]); // and you will get this "Common! Age to small"
You can also pass callback instead of array of rules. Callback receives these parameters $field, $value, $args, $data and should return true/false.
See /tests
folder for more examples.