Composer plugin for validation purpose, contains set of validation rules.
- Multi Language, available
en,id, or use your own custom translation - Validation for multi
fieldsand afieldcan have multirules
validation > fields > rules
Add this composer.json file
{
"require": {
"harryosmar/plugin-validation": "^2.2"
}
}Then running
$ composer installOr type
composer require harryosmar/plugin-validation
in composer.json root directory
- 1. initialize
- 2. add
fieldsto$validationobject - 3. call the
$validationrunmethod - 4, get the errors message if
$statusisfalse - validation option with
breakvalidation chain
<?php
use PluginSimpleValidate\Validation;
use PluginSimpleValidate\Field;
use PluginSimpleValidate\Libraries\Language;
$language = new Language('en');
$validation = new Validation($this->language);
$emailField = (new Field('email', ''))->required()->validEmail();
$passwordField = (new Field('password', ''))->required()->isAlphaOrNumeric()->lengthGreaterThan(5); // add chain of rules to the `field`<?php
/**
* @var \PluginSimpleValidate\Validation $validation
* @var \PluginSimpleValidate\Field $emailField
* @var \PluginSimpleValidate\Field $passwordField
*/
$validation->addField($emailField)->addField($passwordField); // add chain of fields to `$validation` object<?php
/** @var \PluginSimpleValidate\Validation $validation */
$status = $validation->run();<?php
/**
* @var \PluginSimpleValidate\Validation $validation
* @var bool $status
*/
if (!$status) {
$errors = $validation->getErrors(); // return array of errors message
}$erros values
<?php
[
'email' => [
'field is required',
'field must be a valid email address'
],
'password' => [
'field is required',
'field may only letters and numbers',
'field length must be greater than 5'
],
];You can break the validation chain if there is a field get an error. In step 3, when calling the method run of $validation object, add parameter true to enable break the chain when error occured
<?php
/**
* @var \PluginSimpleValidate\Validation $validation
* @var bool $status
*/
$status = $validation->run(true);
if (!$status) {
$errors = $validation->getErrors(); // return array of errors message
}then $erros values will be
<?php
[
'email' => [
'field is required',
'field must be a valid email address'
]
];see the sample code
<?php
use PluginSimpleValidate\FormValidation;
/** @var \PluginSimpleValidate\Libraries\Language $language */
$validation = new FormValidation($language);
/**
* sample of request body
* [
'email' => 'abc',
'grant_type' => '',
'client_id' => '',
'client_secret' => '',
'redirect_uri' => '',
'username' => '',
'password' => '',
'scope' => '',
]
*/
$validation->createFromPost(
\Zend\Diactoros\ServerRequestFactory::fromGlobals(),
[
'email' => 'required,validEmail',
'grant_type' => 'required',
'client_id' => 'required,isNumber',
'client_secret' => 'required,isAlphaOrNumeric',
'redirect_uri' => 'required',
'username' => 'required,lengthBetweenOrEqual:5:10',
'password' => 'required,lengthGreaterThan:5',
'scope' => 'required',
]
);
$validation->run();
if (!$validation->getStatus()) {
$errors = $validation->getErrors();
}The $erros will be
<?php
[
'email' => [
'field must be a valid email address',
],
'grant_type' => [
'field is required',
],
'client_id' => [
'field is required',
'field must be a number',
],
'client_secret' => [
'field is required',
'field may only letters and numbers',
],
'redirect_uri' => [
'field is required',
],
'username' => [
'field is required',
'field length must be greater or equal than 5 or less or equal than 10',
],
'password' => [
'field is required',
'field length must be greater than 5',
],
'scope' => [
'field is required',
],
];There are 2 type of field available :
- Field with single value
PluginSimpleValidate\Field
<?php
use PluginSimpleValidate\Field;
use PluginSimpleValidate\Validation;
$firstNameField = (new Field('firstname', ''))->required()->lengthGreaterOrEqualThan(4);
$lastNameField = (new Field('lastname', ''))->required()->lengthGreaterOrEqualThan(4);
$fullNameField = (new Field(
'fullname',
$firstNameField->getValue() . ' ' . $lastNameField->getValue()
))->lengthGreaterOrEqualThan(10);
/** @var Validation $validation */
$validation->addField($firstNameField)->addField($lastNameField)->addField($fullNameField);
if (!$validation->run()) {
$errors = $validation->getErrors();
}The $errors will be
<?php
[
[
'firstname' => [
'field is required',
'field length must be greater or equal than 4',
],
'lastname' => [
'field is required',
'field length must be greater or equal than 4',
],
'fullname' => [
'field length must be greater or equal than 10',
],
]
];- Field with multi values
PluginSimpleValidate\MultiValues\Field
<?php
use PluginSimpleValidate\MultiValues\Field;
use PluginSimpleValidate\Validation;
$firstName = '';
$lastName = '';
/** @var Validation $validation */
$validation->addField((new Field('name'))
->isTrue($firstName !== '', 'first name required')->isTrue(strlen($firstName) >= 4, 'first name length must be at least 4')
->isTrue($lastName !== '', 'last name required')->isTrue(strlen($lastName) >= 4, 'last name length must be at least 4')
->isTrue(strlen($firstName . ' ' . $lastName) >= 10, 'full name length must be at least 10'));
if (!$validation->run()) {
$errors = $validation->getErrors();
}The $errors will be
<?php
[
'name' => [
'first name required',
'first name length must be at least 4',
'last name required',
'last name length must be at least 4',
'full name length must be at least 10',
]
];- required
- numeric
- aplha
- alpha or numeric
- decimal
- natural
- natural with no zero
- equal
- less than
- greater than
- less or equal than
- greater or equal than
- between
- between or equal
- length
- length less than
- length greater than
- length less or equal than
- length greater or equal than
- length between
- length between or equal
is trueforcustom rule logic- valid phone
<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->required();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isNumber();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->validEmail();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isAlpha();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isAlphaOrNumeric();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isDecimal();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isNatural();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isNaturalNoZero();<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->equal('old password');<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lessThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->greaterThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lessOrEqualThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->greaterOrEqualThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->between(5, 10);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->betweenOrEqual(5, 10);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->length(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthLessThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthGreaterThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthLessOrEqualThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthGreaterOrEqualThan(5);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthBetween(5, 10);<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->lengthBetweenOrEqual(5, 10);<?php
$field = new \PluginSimpleValidate\Field('field', someMethod());
$field->isTrue('this is for error message');
function someMethod() : bool
{
// add logic here
return true;
}<?php
/**
* @var \PluginSimpleValidate\Field $field
*/
$field->isValidPhone('ID'); // `ID` is region code for `indonesia` countryIf you want to use your own translation, when instantiate Language class provide the parameter $translation array
<?php
use PluginSimpleValidate\Libraries\Language;
/**
* @var array $translationArray
* $translationArray must have the same format with https://github.com/harryosmar/plugin-validation/blob/master/src/lang/en.php
*/
$language = new Language('pl', $translationArray);Harry Osmar Sitohang - harryosmarsitohang@gmail.com - https://github.com/harryosmar
See also the list of contributors which participated in this project.


