Creating Custom Validation Rules in Laravel 11
Laravel 11's strong validation mechanism, which imposes restrictions on submitted form data, makes ensuring data integrity easier. Although many typical circumstances are covered by the built-in rules, there are some situations that call for custom validation rules. This tutorial explains how to create custom validation rules in Laravel 11, enabling developers to adjust validation to the specific requirements of their application.
Creating a Custom Validation Rule Class
Use Laravel Artisan's command-line interface to quickly create a new custom validation rule class:
php artisan make:rule GoodPassword
Executing this command generates a class named GoodPasswordRule.php
within the app/Rules
directory.
Implementing the Custom Rule
Open the generated GoodPasswordRule.php
class and articulate the custom validation logic:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class GoodPasswordRule implements Rule
{
/**
* Determine if the value is valid.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return strlen($value) >= 8 && preg_match('/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/', $value);
}
/**
* Get the validation error message for the rule.
*
* @param string $attribute
* @return string
*/
public function message($attribute)
{
return 'The :attribute must be at least 8 characters and include at least one uppercase letter, lowercase letter, number, and special character.';
}
}
The passes
method encapsulates the custom validation logic. In this illustration, it mandates a minimum password length and the presence of various character types.
The message
method specifies the error message exhibited when validation fails.
Utilizing the Custom Rule
Incorporate the custom validation rule within your form request class via the rules
method:
public function rules()
{
return [
'password' => ['required', 'confirmed', new GoodPasswordRule],
];
}
Here, the GoodPasswordRule
is assigned to the password
field, guaranteeing compliance with the defined criteria.
Leveraging the Validation Request
In your controller method, associate the form request class with the request:
public function store(StoreUserRequest $request)
{
// ... store user data ...
}
This binds the validation rules from the StoreUserRequest
class to the incoming request, automatically initiating validation upon form submission.
Following these steps has allowed you to create and use a custom validation rule in Laravel 11, strengthening the data integrity of your application and improving user experience. Don't forget to modify the passes
method's validation logic to meet your unique needs.
-
Date: