validator
validator copied to clipboard
[ Abandoned in favor Envalid ] Intuitive Form Validation Library
This Package is Abandoned in favor if https://github.com/azeemhassni/envalid
PHP Server Side Form Validation
This is a small PHP package that makes it easy to validate forms in your project specially larger forms.
Installation Guide:
You can install Validator either via package download from github or via composer install. I encourage you to do the latter:
{
"require": {
"azi/validator": "2.*"
}
}
##Usage to get started
- require composer autoloader
require 'vendor/autoload.php';
- Instantiate the Validator class
use azi\Validator;
$v = new Validator();
- Define Rules for each form field
$rules = array(
'name' => 'alpha|required',
'age' => 'num|required',
);
- Run the validator
$v->validate( $_POST, $rules );
- check validator for errors, if validation fails redirect back to the form
if ( !$v->passed() ) {
$v->goBackWithErrors();
}
- show validation errors to user
<label>Name :
<input type="text" name="name">
</label>
<?= Validator::error('name'); ?>
you can wrap error messages with custom HTML markup
Validator::error('confirm_password', '<span class="error">:message</span>');
Rules
- required
- num
- alpha
- alnum
- ip
- url
- min:number
- max:number
- same:field_name
Custom Expressions & Messages
- Custom Expressions
you can register your custom RegExp before running the validator
$v->registerExpression( 'cnic', '#^([0-9]{13})$#', 'Invalid CNIC number' );
registerExpression method takes 3 arguments
- expressionID - unique name for the expression
- pattern - the RegExp string
- message [optional] - the error message to be retured if the validation fails
Validator::registerExpression($expressionID , $pattern, $message)
- Custom Messages
you can also pass a custom error message with each rule
$rules['full_name'] = "required--Please Enter your name";
Registring custom rules
this weekend (15th Aug 2015) i was working on a must have feature in validator which is accepting custom rules at run time. here is how you can do it from now on.
$validator = new azi\validator();
$validator->addRule('isUnique', function($field, $value){
$query = mysqli_query("SELECT * FROM users WHERE username = $value");
if($query->affected_rows > 0) {
return "Username '$value' already exists please try something else";
}
return true;
);
now you can use this newly registered rule.
$validator->validate(
$_POST, ['username' => 'isUnique|required']
);
now you have so much power on your fields validation do whatever you want in Closure you passed to
Validator::addRule()
as 2nd argument.
Conditional Rules
you can spacify conditional rules for a field
$rules['age'] = 'if:gender[Male](required|min:2|num)';
Comparison Rules
you can also compare a field with another
$rules['password'] = 'required|min:8';
$rules['confirm_password'] = 'same:password';