Правило alpha_dash
Правило alpha_dash применяется к валидации полей
ввода и проверяет, что значение содержит только допустимые
символы. Это правило гарантирует, что строка состоит
исключительно из букв (включая символы Unicode),
цифр, дефиса и подчёркивания. Пробелы или другие
спецсимволы не допускаются.
Синтаксис
<?php
'field_name' => 'alpha_dash'
?>
Пример
Давайте проверим поле 'username' на соответствие
правилу alpha_dash в контроллере:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => 'required|alpha_dash|min:3|max:20',
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Username is valid']);
}
}
?>
Пример
Пример использования правила alpha_dash с формой
регистрации в классе FormRequest:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class RegisterRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'login' => 'required|alpha_dash|min:4|max:15',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8',
];
}
}
?>
Пример
Вызовем валидацию напрямую с помощью фасада Validator
и проверим несколько значений:
<?php
use IlluminateSupportFacadesValidator;
$values = [
'user_123',
'user-name',
'user name',
'user@name',
'123user',
];
foreach ($values as $value) {
$validator = Validator::make(['field' => $value], ['field' => 'alpha_dash']);
if ($validator->fails()) {
echo '"' . $value . ' is invalid"';
} else {
echo '"' . $value . ' is valid"';
}
}
?>
Результат выполнения кода:
"user_123 is valid"
"user-name is valid"
"user name is invalid"
"user@name is invalid"
"123user is valid"
Пример
Правило alpha_dash часто используется вместе
с правилом required и min для создания
никнеймов в приложении:
<form method="POST" action="/profile">
@csrf
<input type="text" name="username" placeholder="Username">
@error('username')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
<button type="submit">Update</button>
</form>