Blog Detail

08

Apr
A Library for Validating Laravel Config Values & Environment cover image

arrow_back A Library for Validating Laravel Config Values & Environment

Laravel Config Validator is a Laravel package that allows you to validate your config values and environment. The package has been developed and tested to work with the following minimum requirements:

  • PHP 8.0
  • Laravel 8

Installation

You can install the package via Composer:

composer require ashallendesign/laravel-config-validator

Publishing the Default Rulesets

To get you started with validating your app’s config, Laravel Config Validator comes with some default rulesets. To start using these rulesets, you can publish them using the following command:

php artisan vendor:publish --tag=config-validator-defaults

The above command will copy the validation files and place them in a config-validation folder in your project’s root. These rules are just to get you started, so there are likely going to rule in the files that don’t apply to your app. So, once you’ve published them, feel free to delete them or edit them as much as you’d like.

Usage

Creating a Validation Ruleset

Using the Generator Command

This package comes with a command that you can use to quickly create a validation file to get you started right away. Let’s say that you wanted to create a validation file for validating the config in the config/app.php file. To do this, you could use the following command:

php artisan make:config-validation app

Running the above command would create a file in config-validation/app.php ready for you to start adding your config validation.

Ruleset Location

To validate your application’s config, you need to define the validation rules first. You can do this by placing them inside files in a config-validation folder with names that match the config file you’re validating. As an example, to validate the config/app.php config file, you would create a new file at config-validation/app.php that would hold the rules.

Adding Rules to a Ruleset

Once you have your ruleset file created in the config-validation folder, you can start adding your validation rules.

Under the hood, Laravel Config Validator uses the built-in Validator class, so it should seem pretty familiar to work with. To check out the available Laravel validation rules that can be used, click here.

As an example, we might want to add a config validation rule to ensure that the driver field in the app/mail.php file is a supported field. To do this, we could create a file at config-validation/mail.php with the following:

<?php

use AshAllenDesign\ConfigValidator\Services\Rule;

return [
    Rule::make('driver')->rules(['in:smtp,sendmail,mailgun,ses,postmark,log,array']),
    // ...
];

Custom Validation Error Messages

There may be times when you want to override the error message for a specific validation rule. This can be done by passing in an array containing the messages to the ->messages() method for a Rule. This array should follow the same pattern that would be used in a standard Laravel Validator object.

As an example, we might want to add a config validation rule to ensure that the driver field in the app/mail.php file is a supported field and also use a custom error message. To do this, we could update our validation file to the following:

<?php

use AshAllenDesign\ConfigValidator\Services\Rule;

return [
    Rule::make('driver')
        ->rules(['in:smtp,sendmail,mailgun,ses,postmark,log,array'])
        ->messages(['in' => 'The mail driver is invalid']),
    // ...
];

This package has a lot of amazing features with code examples. If you want to dig more you can visit its complete documentation on Github.

Published at : 08-04-2022

Author : Rizwan Aslam
AUTHOR
Rizwan Aslam

I am a highly results-driven professional with 12+ years of collective experience in the grounds of web application development especially in laravel, native android application development in java, and desktop application development in the dot net framework. Now managing a team of expert developers at Codebrisk.

Launch your project

Launch project