Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jridgewell/formvalidator
A HTML form validator written in PHP.
https://github.com/jridgewell/formvalidator
Last synced: about 2 months ago
JSON representation
A HTML form validator written in PHP.
- Host: GitHub
- URL: https://github.com/jridgewell/formvalidator
- Owner: jridgewell
- Created: 2013-05-31T21:23:06.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-06-26T19:13:40.000Z (over 11 years ago)
- Last Synced: 2024-10-19T18:48:20.212Z (2 months ago)
- Language: PHP
- Size: 316 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FormValidator [![Build Status](https://travis-ci.org/jridgewell/FormValidator.png?branch=master)](https://travis-ci.org/jridgewell/FormValidator)
FormValidator allows you to create and validate forms using a simple
rule based approach. It uses an API very similar to Rails' ActiveRecord.## Basics
A form file is just a class that extends the \FormValidator\Form class
In this example, the form validator checks if `name` isn't empty### test.form.php (the model)
```php
validations = array( // Contains a hash array of form elements
"name" => Validation::presence() // name field must contain something
);
}
}
?>
```### index.php (the controller)
```php
hasPosted() && ($data = $form->validate())) {
// Form passes validation, use the $data for validated POST data} else {
// Form hasn't posted or hasn't passed validation, so we load our html file
require_once('form.html.php');
}
?>
```### form.html.php (the view)
```php
error('name', 'There was an error'); ?>Please Enter your name: input('name'); ?>
submit('Submit');?>
```#### About the View
1. If the form fails validation, by using the `$form->input` method, we
preserve whatever value the user typed into that field (**except for
password fields**)
2. The form **must** have a field with the name attribute set to the
name of the form class (`name="TestForm"` in our example). Using the
`$form->submit` method takes care of this requirement.## Installation
### Via Composer
composer require "jridgewell/form-validator:1.*"
Then just add `require 'vendor/autoload.php';` to any code that requires
FormValidator.## The Validations Array
The `$validations` array contains all the form fields and rules that
need to pass, for the form to be valid. In the example above, it showed
a single rule applying to one form element, but you can apply multiple
rules to an element by using an array.```php
validations = array(
'name' => Validation::presence(),
'age' => array( //Specifiy multiple rules
Validation::presence(),
Validation::numericality()
)
);
}
}
?>
```
In our html file, if we wanted to show the errors for the validations,
we could do the following:```php
error('name', 'There was an error'); ?>
Please Enter your name: input('name'); ?>
error('age', 'This is an optional custom message about age'); ?>
Please Enter your age: input('age'); ?>
submit('Submit');?>
?>
```### Validation Array Options
Most validations also support passing in an options array. This allows
for custom messages, and can allow for a field to be optional (blank).
Please see the validation for acceptable parameters.```php
validations = array(
'name' => Validation::length(array(
'minimum' => 0,
'maximum' => 100
)),
'age' => Validation::numericality(array(
'optional' => true,
'only_integer' => true
)),
'username' => Validation::exclusion(array(
'admin',
'superuser'
), array(
'message' => 'You are not our master!'
))
);
}
}
?>
```## List of validations
### Simple Validations
Validation
Options
Description
Validation::anything()
No options
This field is always valid
Validation::acceptance()
- message => 'message'
- Use a custom error message
- accept => 'truthy'
- The value that this field will be compared (==)
with. Defaults to true
This field must be accepted (truthy)
Validation::email()
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must be a valid email
Validation::length()
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations. - is => $x
- The length of this field must be equal to $x
- minimum => $x
- The length of this field must be at least (<=) $x
- maximum => $x
- The length of this field must be at most (>=) $x
This field's number of characters must be in the supplied
range. If no options are passed, this field will always be valid
Validation::numericality()
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations. - only_integer => true
- Only whole integers are acceptable. If not
supplied, whole integers or floats are acceptable. - even => true
- Only even numbers are acceptable
- odd => true
- Only odd numbers are acceptable
- equal_to => $x
- The number must be equal to $x
- less_than => $x
- The number must be less than $x
- less_than_or_equal_to => $x
- The number must be less than or equal to $x
- greater_than => $x
- The number must be greater than $x
- greater_than_or_equal_to => $x
- The number must be greater than or equal to $x
This field must be a number
Validation::presence()
- message => 'message'
- Use a custom error message
This field must not be empty
Validation::url()
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must be a valid url
### Advanced Validations (require parameters)
Validation
Parameter
Options
Description
Validation::confirmation($func)
- $func
- A (callable) callback to match against. It's
return value will be type and value checked
(===) against this field
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must match the return value of $other_field_func.
Useful for confirming a password in a second field.
Validation::exclusion($array)
- $array
- A list of unacceptable values.
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must not be equal (==) to a value inside
$array.
Validation::format($regex)
- $regex
- The regex to match this field against
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must match against the supplied $regex
Validation::inclusion($array)
- $array
- A list of acceptable values.
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This field must be equal (==) to a value inside
$array.
Validation::validateWith($func)
/td>- $func
- A custom (callable) callback to match against.
- message => 'message'
- Use a custom error message
- optional => true
- Will accept a blank field. If this field is not
blank, will preform the validations.
This validation allows for a custom function to preform the
field validation. It's return value must be (===) true, or else
it will use the return value as the field's error message
### Advanced Validation Examples
#### Validation::confirmation($other_field_func)
```php
validations = array(
'password' => Validation::confirmation(function() {
return $_POST['password_confirmation'];
})
);
}
}
?>
```
#### Validation::exclusion($array)
```php
validations = array(
'usernames' => Validation::exclusion(array(
'admin',
'superuser'
))
);
}
}
?>
```
#### Validation::format($regex)
```php
validations = array(
'mp3Url' => Validation::format('/\.mp3$/')
);
}
}
?>
```
#### Validation::inclusion($array)
```php
validations = array(
'usernames' => Validation::inclusion(array(
'Matt',
'Thor',
'Asa'
))
);
}
}
?>
```
#### Validation::validateWith($func)
This validation requires a (callable) callback. This callback is
then provided with the submitted field data as it's only parameter. The
callback can either `return true` and the validation will pass, or
return anything else and the return will be used as the error message
for the field.
```php
validations = array(
'checkCustom' => Validation::validateWith(function($val) {
if ($val === 'supahSecret') {
return true;
}
return (substr($val, 0, 2) == 'st');
})
);
}
}
?>
```