shergela/validation-rule

Build custom laravel validation rules easily

v1.0.7 2024-09-12 07:42 UTC

This package is auto-updated.

Last update: 2025-06-25 10:32:41 UTC


README

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

  1. Build rule
  2. Build Messages
  3. Writing a custom Messages into method

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.