Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Custom alphabetic validator that allows spaces
<?php
/* app/validators.php */
Validator::extend('alpha_spaces', function($attribute, $value)
{
return preg_match('/^[\pL\s]+$/u', $value);
});
/*
* add the validators.php file in start/global.php: require app_path().'/validators.php'
* and use it as usual: $rules = array('name' => 'required|alpha_spaces',);
*/
@jrean

This comment has been minimized.

Copy link

commented Apr 16, 2014

Thank for sharing this chunk! I used the regex.

You can also achieve it by using the Service provider ; You can create a folder validator/ within the app/ folder.
Then you create CustomValidator.php and a CustomValidatorServiceProvider.php files.

In the CustomValidator.php add the following:

<?php namespace Validators;

use Illuminate\Validation\Validator;

class CustomValidator
extends Validator
{
    public function validateAlphaSpaces($attribute, $value, $params)
    {
        return preg_match('/^[\pL\s]+$/u', $value);
    }
}

In the CustomValidatorServiceProvider add the following:

<?php namespace Validators;

use Illuminate\Support\ServiceProvider;
use Validators\CustomValidator;

class CustomValidatorServiceProvider
extends ServiceProvider
{
    public function register(){}

    public function boot()
    {
        $this->app->validator->resolver(function($translator, $data, $rules, $messages)
        {
            return new CustomValidator($translator, $data, $rules, $messages);
        });
    }

}

Don't forget to set your error message and to update/autoload files with composer.

Regards,

@saul-lopez

This comment has been minimized.

Copy link

commented Jun 19, 2014

I'm having trouble getting the Service Provider suggested by @jrean to work .

Where do I have to register the files in composer?

Regards.

@abdullahbutt

This comment has been minimized.

Copy link

commented Oct 13, 2014

here is how I did "laravel validator for alphabetic numeric characters and dash and underscore" based on "Elena's" gist
But I am not sure how to match unicode characters, so poor João Gabriel won't have his name marked as invalid anymore

//laravel validator for alphabetic numeric characters and dash and underscore
//This is how I do it:

/*

  • app/validators.php
    */

Validator::extend('alpha_num_dash', function($attribute, $value)
{
return preg_match('/^[a-zA-Z0-9-_]+$/', $value);
});

/*
Define your custom validation message in lang/xx/validation.php:
*/
*
|--------------------------------------------------------------------------
| Custom Validation Rules
|--------------------------------------------------------------------------
|
| Custom rules created in app/validators.php
|
*/
"alpha_num_dash" => "The :attribute may only contain letters, numeric and dash",

/*
Use it as usual:
*/

$rules = array(
'name' => 'required|alpha_num_dash',
);
And don't forget to require the validators.php file in start/global.php somewhere at the end:

require app_path().'/validators.php';

@waleedrehmankhan

This comment has been minimized.

Copy link

commented Sep 18, 2015

Well this didn't worked for me.
So i did this way.

Just Paste this method in Validator.php

public function validateAlphaSpaces($attribute, $value, $params)
{
return preg_match('/^[\pL\s]+$/u', $value);
}

And your message in Validation.php

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
"alpha_spaces" => "The :attribute may only contain letters and spaces.",

And Its all done :).

Now call it as usual

public function rules()
{
return [
'applicantName' => 'required|alpha_spaces',
];
}

@insidert

This comment has been minimized.

Copy link

commented Mar 16, 2016

According to 5.2 docs, do this way.

  1. Make provider via Artican CLI
    " php artisan make:provider YourServiceProvider "
  2. Register it in config/app.php file to providers array,
    " ........
    App\Providers\RouteServiceProvider::class,
    App\Providers\YourServiceProvider::class, "
  3. Edit the code in App\YourServiceProvider.php
    <?php namespace App\Providers; use Validator; use Illuminate\Support\ServiceProvider; class YourServiceProvider extends ServiceProvider { public function boot() { Validator::extend('alpha_spaces', function($attribute, $value) { return preg_match('/^[\pL\s]+$/u', $value); }); } public function register() { // } }

4.Add custom message in language file : resources\lang\en\validaton.php
'alpha_num' => 'The :attribute may only contain letters and numbers.', 'alpha_spaces' => 'The :attribute may only contain letters and spaces.',

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.