saritasa/laravel-fluent-validation

Set of fluent builders for Laravel request validation rules

1.3.0 2024-01-08 12:49 UTC

This package is auto-updated.

Last update: 2024-04-08 13:16:07 UTC


README

PHP Unit PHP CodeSniffer codecov Release PHPv Downloads

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:

Inline documentation

Intellisence:

Intelisence

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

  1. Create fork, checkout it
  2. Develop locally as usual. Code must follow PSR-1, PSR-2 - run PHP_CodeSniffer to ensure, that code follows style guides
  3. Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
  4. Update README.md to describe new or changed functionality
  5. Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
  6. When ready, create pull request

Make shortcuts

If you have GNU Make installed, you can use following shortcuts:

  • make cs (instead of php vendor/bin/phpcs) - run static code analysis with PHP_CodeSniffer to check code style
  • make csfix (instead of php vendor/bin/phpcbf) - fix code style violations with PHP_CodeSniffer automatically, where possible (ex. PSR-2 code formatting violations)
  • make test (instead of php vendor/bin/phpunit) - run tests with PHPUnit
  • make install - instead of composer install
  • make all or just make without parameters - invokes described above install, cs, test tasks sequentially - project will be assembled, checked with linter and tested with one single command

Resources