Skip to content

SkyWalkerGhost/laravel-validation-rule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build custom laravel validation rules easily

This package is under development, please do not use in production. You can download and test it.

Installation

Require the package with composer using the following command:

composer require shergela/validation-rule

Service Provider

<?php
return [
    Shergela\Validations\ShergelaValidationsServiceProvider
];

Build rules

Available rules

Methods Laravel Rule
Rule::required() required
Rule::nullable() nullable
Rule::boolean() boolean
Rule::rules() custom rules
->email() email
->uniqueEmail() unique:users,email
->min() min
->max() max
->minDigits() min_digits
->maxDigits() max_digits
->integer() integer
->numeric() numeric
->digits() digits:1
->digitsBetween() digits:1,4
->decimal() decimal
->alpha() alpha
->alphaDash() alpha_dash
->alphaNum() alpha_num
->string() string
->uppercase() uppercase
->lowercase() lowercase
->regex() regex:pattern
->hexColor() hex_color
->json() json
->url() url or url:http,https
->uuid() uuid
->ulid() ulid
->timezone() timezone
->date() date
->dateFormat() date_format
->dateEquals() date_equals
->dateBefore() before
->dateBeforeOrEqual() before_or_equal
->dateAfter() after
->dateAfterOrEqualToday() after_or_equal:today
->dateAfterOrEquals() after_or_equal
->ip() ip
->ipv4() ipv4
->ipv6() ipv6
->macAddress() mac_address
->startsWith() starts_with:foo,bar...
->size() size
->endsWith() ends_with:foo,bar
->doesntStartWith() doesnt_start_with:foo,bar
->doesntEndWith() doesnt_end_with:foo,bar
->in() in:foo,bar...
->notIn() not_in:foo,bar,baz...
->regex() regex:pattern
->uppercaseFirstLetter() new UppercaseFirstLetter()
->lowercaseFirstLetter() new TimezoneRegionValidation()
->separateIntegersByComma() new SeparateIntegersByComma()
->separateStringsByComma() new SeparateStringsByComma()
->separateStringsByUnderscore() new SeparateStringsByUnderscore()
->timezones() new TimezoneValidation()
->timezoneAsia() new TimezoneRegionValidation()
->timezoneEurope() new TimezoneRegionValidation()
->timezoneAmerica() new TimezoneRegionValidation()
->timezoneAntarctica() new TimezoneRegionValidation()
->timezoneArctic() new TimezoneRegionValidation()
->timezoneAtlantic() new TimezoneRegionValidation()
->timezoneAustralia() new TimezoneRegionValidation()
->timezoneIndian() new TimezoneRegionValidation()
->timezonePacific() new TimezoneRegionValidation()
->array() array
->arrayDistinct() distinct
->arrayDistinctStrict() distinct:strict
->arrayDistinctIgnoreCase() distinct:ignore_case
->uppercaseWord() Word must be a uppercase
->lowercaseWord() Word must be a lowercase
->lettersAndSpaces() Letters and spaces only

Writing custom rule and message

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Shergela\Validations\Validation\Rule;

class TestRequest extends FormRequest
{
/**
* @return bool
*/
public function authorize(): bool
{
    return true;
}

    public function rules(): array
    {
        return [
            'name' => [
                Rule::required()->email()->messages(
                    messages: [
                        'name.required' => 'The name field is required.',
                        'email.required' => 'The email field is required.',
                    ]
                )
            ],
        ];
    }
}

Writing a custom message in the methods

    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    use Shergela\Validations\Validation\Rule;
    
    class TestRequest extends FormRequest
    {
        /**
        * @return bool
          */
          public function authorize(): bool
          {
          return true;
          }
        
          public function rules(): array
          {
            return [
                'name' => Rule::required(message: 'Please :name enter your name')
                    ->min(min: 3, message: 'Please :name enter at least 3 characters'),
            ];
          }
      }

License

The MIT License (MIT). Please see License for more information.