React Native Validation
About to overhaul this package due to new demand.
Promise-based validation for React Native
Introduction
React Native Validation allows for quick and seamless validation out of the box. We designed the package based on Laravel's Validation and works almost interchangeably.
Features:
- Multiple languages support, as well as custom language support
- Extendable
- Easy to learn and use
- Light-weight
Installing
Install React Native Validation through NPM
$ npm i @midwestern/react-native-validation
Importing React Native Validation into your components
import Validation from '@midwestern/react-native-validation'
Usage
Example
const Validator = new Validation({
first_name: 'required|alpha|max:255',
last_name: 'required|alpha|max:255',
email: 'required|string|email|max:255|unique:users',
password: 'required|string|min:6|confirmed'
})
Validator.validate(this.state.form)
.then(() => {
})
.catch(errors => {
this.setState(state => {
state.errors = errors
return state
})
})
Available Rules
Rule | Description |
---|
required | forces the field to be required |
min:val | forces the field length to be longer than the value |
max:val | forces the field to be shorter than the value |
required | forces the field to be required |
Making your own rules
note: your method should return a boolean which represents whether or not the validation succeeded
const Validator = new Validation({
exampleField: 'required|matchExample:OrMe'
})
Validator.extendRules({
ruleName: 'matchExample',
method: (fieldName, val, val2) => {
return val === 'example' || val === val2
},
errorMessage: {
english: 'FIELD didnt match VAR1 or example'
}
})
Extending error messages language
note: not defining an error message for a rule will result in that rule defaulting to english
const Validator = new Validation({
first_name: 'required|alpha|max:255',
last_name: 'required|alpha|max:255',
email: 'required|string|email|max:255|unique:users',
password: 'required|string|min:6|confirmed'
})
Validator.extendLanguages({
language: 'spanish',
errorMessages: {
required: 'ENTRADA es requerido',
alpha: 'ENTRADA solo puede contener caracteres alfa',
email: 'ENTRADA debe ser una dirección de correo electrónico válida',
min: 'ENTRADA la longitud debe ser más que los caracteres VAR1',
max: 'ENTRADA la longitud debe ser menor que los caracteres VAR1',
string: 'ENTRADA debe ser una cadena válida',
confirmed: 'ENTRADA debe ser confirmado'
}
})
Validator.setLanguage('spanish')
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Authors
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE.md file for details