Use fluent-style syntax to build Laravel validation rules
Example:
$rules = [
'id' => Rule::int()->required(),
'name' => Rule::string()->required()->minLength(3)->toString(),
'email' => Rule::string()->required()->email()->toArray(),
'role_id' => Rule::modelExists(Role::class),
'salary' => Rule::int()->when($isPHPDeveloper,
function($ruleWhenTrue) {
return $ruleWhenTrue->min(1000000);
},
function($ruleWhenFalse) {
return $ruleWhenFalse->max(1000);
}
)
]
- Strong typing
- Intellisence for available rules and parameters (if you use smart IDE, like PHPStorm)
- Hints about mistypings (if you use smart IDE, like PHPStorm)
Inline documentation:
Intellisence:
Custom validation rules
You can also use custom declared validations:
$rules = [
... => Rule::custom('foo')
]
Install the saritasa/laravel-fluent-validation
package:
$ composer require saritasa/laravel-fluent-validation
If you use Laravel 5.4 or less,
or 5.5+ with package discovery disabled,
add the FluentValidationServiceProvider in config/app.php
:
'providers' => array(
// ...
Saritasa\Laravel\Validation\FluentValidationServiceProvider::class,
)
Note: You can omit service provider registration, but then you must call ->toString() or ->toArray() on each builder. If service provider is registered, manual casting of rule to string or array is not necessary and default Laravel's Illuminate\Validation\ValidationServiceProvider::class can be removed from 'providers' array.
Root of your rule builder.
- Create fork, checkout it
- Develop locally as usual. Code must follow PSR-1, PSR-2 - run PHP_CodeSniffer to ensure, that code follows style guides
- Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
- Update README.md to describe new or changed functionality
- Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
- When ready, create pull request
If you have GNU Make installed, you can use following shortcuts:
make cs
(instead ofphp vendor/bin/phpcs
) - run static code analysis with PHP_CodeSniffer to check code stylemake csfix
(instead ofphp vendor/bin/phpcbf
) - fix code style violations with PHP_CodeSniffer automatically, where possible (ex. PSR-2 code formatting violations)make test
(instead ofphp vendor/bin/phpunit
) - run tests with PHPUnitmake install
- instead ofcomposer install
make all
or justmake
without parameters - invokes described above install, cs, test tasks sequentially - project will be assembled, checked with linter and tested with one single command