Правило проверки достоверности Laravel 5.1 не может принимать пробелы
Я создал регистрационную форму, в которой фермер будет вводить свое имя. Имя может содержать дефис или пробелы. Правила проверки написаны в файле app/http/requests/farmerRequest.php
:
public function rules()
{
return [
'name' => 'required|alpha',
'email' => 'email|unique:users,email',
'password' => 'required',
'phone' => 'required|numeric',
'address' => 'required|min:5',
];
}
Но проблема в том, что поле name
не допускает никаких пробелов из-за правила alpha
. Поле name
varchar(255) collation utf8_unicode_ci
.
Что мне делать, чтобы пользователь мог ввести свое имя в пробелы?
Ответы
Ответ 1
Вы можете использовать правило регулярного выражения, которое явно допускает буквы, дефисы и пробелы:
public function rules()
{
return [
'name' => 'required|regex:/^[\pL\s\-]+$/u',
'email' => 'email|unique:users,email',
'password' => 'required',
'phone' => 'required|numeric',
'address' => 'required|min:5',
];
}
Ответ 2
Вы можете создать собственное правило проверки для этого, поскольку это довольно распространенное правило, которое вы можете использовать в другой части вашего приложения (или, возможно, в следующем проекте).
в приложении/поставщиках/AppServiceProvider.php
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//Add this custom validation rule.
Validator::extend('alpha_spaces', function ($attribute, $value) {
// This will only accept alpha and spaces.
// If you want to accept hyphens use: /^[\pL\s-]+$/u.
return preg_match('/^[\pL\s]+$/u', $value);
});
}
Определите свое собственное сообщение проверки в resources/lang/en/validation.php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
// Custom Validation message.
'alpha_spaces' => 'The :attribute may only contain letters and spaces.',
'accepted' => 'The :attribute must be accepted.',
....
и использовать его как обычно
public function rules()
{
return [
'name' => 'required|alpha_spaces',
'email' => 'email|unique:users,email',
'password' => 'required',
'phone' => 'required|numeric',
'address' => 'required|min:5',
];
}