Download the PHP package inilim/validation without Composer
On this page you can find all versions of the php package inilim/validation. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download inilim/validation
More information about inilim/validation
Files in inilim/validation
Package validation
Short Description PHP Laravel like standalone validation library
License MIT
Informations about the package validation
Rakit Validation - PHP Standalone Validation Library
PHP Standalone library for validating data. Inspired by Illuminate\Validation Laravel.
Features
- API like Laravel validation.
- Array validation.
$_FILESvalidation with multiple file support.- Custom attribute aliases.
- Custom validation messages.
- Custom rule.
Requirements
- PHP 7.0 or higher
- Composer for installation
Quick Start
Installation
Usage
There are two ways to validating data with this library. Using make to make validation object,
then validate it using validate. Or just use validate.
Examples:
Using make:
or just validate it:
In this case, 2 examples above will output the same results.
But with make you can setup something like custom invalid message, custom attribute alias, etc before validation running.
Attribute Alias
By default we will transform your attribute into more readable text. For example confirm_password will be displayed as Confirm password.
But you can set it anything you want with setAlias or setAliases method.
Example:
Now if province_id value is empty, error message would be 'Province is required'.
Custom Validation Message
Before register/set custom messages, here are some variables you can use in your custom messages:
:attribute: will replaced into attribute alias.:value: will replaced into stringify value of attribute. For array and object will replaced to json.
And also there are several message variables depends on their rules.
Here are some ways to register/set your custom message(s):
Custom Messages for Validator
With this way, anytime you make validation using make or validate it will set your custom messages for it.
It is useful for localization.
To do this, you can set custom messages as first argument constructor like this:
Or using setMessages method like this:
Custom Messages for Validation
Sometimes you may want to set custom messages for specific validation.
To do this you can set your custom messages as 3rd argument of $validator->make or $validator->validate like this:
Or you can use $validation->setMessages like this:
Custom Message for Specific Attribute Rule
Sometimes you may want to set custom message for specific rule attribute.
To do this you can use : as message separator or using chaining methods.
Examples:
Or using chaining methods:
Translation
Translation is different with custom messages.
Translation may needed when you use custom message for rule in and not_in.
For example if you use rule in:1,2,3 we will set invalid message like "The Attribute only allows '1', '2', or '3'"
where part "'1', '2', or '3'" is comes from ":allowed_values" tag.
So if you have custom Indonesian message ":attribute hanya memperbolehkan :allowed_values",
we will set invalid message like "Attribute hanya memperbolehkan '1', '2', or '3'" which is the "or" word is not part of Indonesian language.
So, to solve this problem, we can use translation like this:
Actually, our built-in rules only use words 'and' and 'or' that you may need to translates.
Working with Error Message
Errors messages are collected in Rakit\Validation\ErrorBag object that you can get it using errors() method.
Now you can use methods below to retrieves errors messages:
all(string $format = ':message')
Get all messages as flatten array.
Examples:
firstOfAll(string $format = ':message', bool $dotNotation = false)
Get only first message from all existing keys.
Examples:
Argument $dotNotation is for array validation.
If it is false it will return original array structure, if it true it will return flatten array with dot notation keys.
For example:
first(string $key)
Get first message from given key. It will return string if key has any error message, or null if key has no errors.
For example:
toArray()
Get all messages grouped by it's keys.
For example:
count()
Get count messages.
has(string $key)
Check if given key has an error. It returns bool if a key has an error, and otherwise.
Getting Validated, Valid, and Invalid Data
For example you have validation like this:
You can get validated data, valid data, or invalid data using methods in example below:
Available Rules
Click to show details.
required
The field under this validation must be present and not 'empty'. Here are some examples: | Value | Valid | | ------------- | ----- | | `'something'` | true | | `'0'` | true | | `0` | true | | `[0]` | true | | `[null]` | true | | null | false | | [] | false | | '' | false |required_if:another_field,value_1,value_2,...
The field under this rule must be present and not empty if the anotherfield field is equal to any value. For example `required_if:something,1,yes,on` will be required if `something` value is one of `1`, `'1'`, `'yes'`, or `'on'`.required_unless:another_field,value_1,value_2,...
The field under validation must be present and not empty unless the anotherfield field is equal to any value.required_with:field_1,field_2,...
The field under validation must be present and not empty only if any of the other specified fields are present.required_without:field_1,field_2,...
The field under validation must be present and not empty only when any of the other specified fields are not present.required_with_all:field_1,field_2,...
The field under validation must be present and not empty only if all of the other specified fields are present.required_without_all:field_1,field_2,...
The field under validation must be present and not empty only when all of the other specified fields are not present.default/defaults
This is special rule that doesn't validate anything. It just set default value to your attribute if that attribute is empty or not present. For example if you have validation like this Validation passes because we sets default value for `enabled` and `published` to `1` and `0` which is valid. Then we can get the valid/default data.uppercase
The field under this validation must be valid uppercase.lowercase
The field under this validation must be valid lowercase.json
The field under this validation must be valid JSON string.alpha
The field under this rule must be entirely alphabetic characters.numeric
The field under this rule must be numeric.alpha_num
The field under this rule must be entirely alpha-numeric characters.alpha_dash
The field under this rule may have alpha-numeric characters, as well as dashes and underscores.alpha_spaces
The field under this rule may have alpha characters, as well as spaces.in:value_1,value_2,...
The field under this rule must be included in the given list of values. This rule is using `in_array` to check the value. By default `in_array` disable strict checking. So it doesn't check data type. If you want enable strict checking, you can invoke validator like this: Then 'enabled' value should be boolean `true`, or int `1`.not_in:value_1,value_2,...
The field under this rule must not be included in the given list of values. This rule also using `in_array`. You can enable strict checking by invoking validator and call `strict()` like example in rule `in` above.min:number
The field under this rule must have a size greater or equal than the given number. For string value, size corresponds to the number of characters. For integer or float value, size corresponds to its numerical value. For an array, size corresponds to the count of the array. If your value is numeric string, you can put `numeric` rule to treat its size by numeric value instead of number of characters.max:number
The field under this rule must have a size lower or equal than the given number. Value size calculated in same way like `min` rule.between:min,max
The field under this rule must have a size between min and max params. Value size calculated in same way like `min` and `max` rule.digits:value
The field under validation must be numeric and must have an exact length of `value`.digits_between:min,max
The field under validation must have a length between the given `min` and `max`.url
The field under this rule must be valid url format. By default it check common URL scheme format like `any_scheme://...`. But you can specify URL schemes if you want. For example: > For common URL scheme and mailto, we combine `FILTER_VALIDATE_URL` to validate URL format and `preg_match` to validate it's scheme. Except for JDBC URL, currently it just check a valid JDBC scheme.integer
The field under t rule must be integer.boolean
The field under this rule must be boolean. Accepted input are `true`, `false`, `1`, `0`, `"1"`, and `"0"`.ip
The field under this rule must be valid ipv4 or ipv6.ipv4
The field under this rule must be valid ipv4.ipv6
The field under this rule must be valid ipv6.extension:extension_a,extension_b,...
The field under this rule must end with an extension corresponding to one of those listed. This is useful for checking the file type.array
The field under this rule must be array.array_list
The field under this rule must be an array list (sequential integer-indexed array). This rule validates that the array has consecutive integer keys starting from 0, essentially checking if it's a list/array rather than an associative array. For PHP 8.1+, it uses the native `array_is_list()` function, for older versions it provides a polyfill implementation.same:another_field
The field value under this rule must be same with `another_field` value.same_strict:another_field
The field value under this rule must be same with `another_field` value using strict comparison (===).scalar
The field under this rule must be a scalar value (boolean, integer, float, or string).str_len_between:min,max
The string field under this rule must have a length between the given min and max values (inclusive).array_count_between:min,max
The array field under this rule must have a count between the given min and max values (inclusive).array_count_max:max
The array field under this rule must have a count less than or equal to the given max value.array_count_min:min
The array field under this rule must have a count greater than or equal to the given min value.type_array_keys_only_int
The array field under this rule must have only integer keys (no string keys allowed).type_array_keys_only_string
The array field under this rule must have only string keys (no integer keys allowed).regex:/your-regex/
The field under this rule must be match with given regex.date:format
The field under this rule must be valid date format. Parameter `format` is optional, default format is `Y-m-d`.accepted
The field under this rule must be one of `'on'`, `'yes'`, `'1'`, `'true'`, or `true`.present
The field under this rule must be exists, whatever the value is.different:another_field
Opposite of `same`. The field value under this rule must be different with `another_field` value.after:tomorrow
Anything that can be parsed by `strtotime` can be passed as a parameter to this rule. Valid examples include : - after:next week - after:2016-12-31 - after:2016 - after:2016-12-31 09:56:02before:yesterday
This also works the same way as the [after rule](#after). Pass anything that can be parsed by `strtotime`callback
You can use this rule to define your own validation rule. This rule can't be registered using string pipe. To use this rule, you should put Closure inside array of rules. For example: You can set invalid message by returning a string. For example, example above would be: > Note: `Rakit\Validation\Rules\Callback` instance is binded into your Closure. So you can access rule properties and methods using `$this`.nullable
Field under this rule may be empty.Register/Override Rule
Another way to use custom validation rule is to create a class extending Rakit\Validation\Rule.
Then register it using setValidator or addValidator.
For example, you want to create unique validator that check field availability from database.
First, lets create UniqueRule class:
Then you need to register UniqueRule instance into validator like this:
Now you can use it like this:
In UniqueRule above, property $message is used for default invalid message. And property $fillable_params is used for fillParameters method (defined in Rakit\Validation\Rule class). By default fillParameters will fill parameters listed in $fillable_params. For example unique:users,email,[email protected] in example above, will set:
If you want your custom rule accept parameter list like
inandnot_inrules, you just need to overridefillParameters(array $params)method in your custom rule class.
Note that unique rule that we created above also can be used like this:
So you can improve UniqueRule class above by adding some methods that returning its own instance like this:
Then you can use it in more funky way like this:
Implicit Rule
Implicit rule is a rule that if it's invalid, then next rules will be ignored. For example if attribute didn't pass required* rules, mostly it's next rules will also be invalids. So to prevent our next rules messages to get collected, we make required* rules to be implicit.
To make your custom rule implicit, you can make $implicit property value to be true. For example:
Modify Value
In some case, you may want your custom rule to be able to modify it's attribute value like our default/defaults rule. So in current and next rules checks, your modified value will be used.
To do this, you should implements Rakit\Validation\Rules\Interfaces\ModifyValue and create method modifyValue($value) to your custom rule class.
For example:
Before Validation Hook
You may want to do some preparation before validation running.
To do this, you should implements Rakit\Validation\Rules\Interfaces\BeforeValidate and create method beforeValidate() to your custom rule class.
For example:
All versions of validation with dependencies
ext-mbstring Version *