-
-
Save elena-kolevska/8580401 to your computer and use it in GitHub Desktop.
<?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',); | |
*/ |
I'm having trouble getting the Service Provider suggested by @jrean to work .
Where do I have to register the files in composer?
Regards.
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';
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',
];
}
According to 5.2 docs, do this way.
- Make provider via Artican CLI
" php artisan make:provider YourServiceProvider " - Register it in config/app.php file to providers array,
" ........
App\Providers\RouteServiceProvider::class,
App\Providers\YourServiceProvider::class, " - 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.',
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:
In the CustomValidatorServiceProvider add the following:
Don't forget to set your error message and to update/autoload files with composer.
Regards,