saritasa / laravel-fluent-validation
Set of fluent builders for Laravel request validation rules
Installs: 141 584
Dependents: 1
Suggesters: 0
Security: 0
Stars: 8
Watchers: 10
Forks: 7
Open Issues: 2
Requires
- php: >=7.1
- illuminate/database: ^5.4 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- illuminate/support: ^5.4 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- illuminate/validation: ^5.4 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- propaganistas/laravel-phone: ^3.0 || ^4.0 || ^5.0
- saritasa/php-common: ^1.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- squizlabs/php_codesniffer: ^3.0
README
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); } ) ]
Advantages
- 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)
Examples
Inline documentation:
Intellisence:
Custom validation rules
You can also use custom declared validations:
$rules = [ ... => Rule::custom('foo') ]
Installation
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.
Available classes
\Saritasa\Laravel\Validation\Rule
Root of your rule builder.
Contributing
- 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
Make shortcuts
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