РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
609 of 1392 menu

Правило alpha_num

Правило alpha_num используется для валидации полей формы и гарантирует, что значение содержит только буквы латинского алфавита и цифры. При этом пробелы, дефисы, подчёркивания и другие специальные символы не допускаются. Правило применяется в массиве правил валидации, передаваемых в метод validate или в метод rules класса FormRequest.

Синтаксис

Правило указывается в виде строки:

<?php 'field_name' => 'alpha_num' ?>

или с использованием класса Rule:

<?php use Illuminate\Validation\Rule; 'field_name' => Rule::alphaNum() ?>

Пример использования в контроллере

Давайте проверим, что поле 'username' содержит только латинские буквы и цифры:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'username' => 'required|alpha_num|max:20', 'email' => 'required|email', ]); // Сохранение пользователя return response()->json(['success' => true]); } } ?>

Пример с допустимыми значениями

Проверим, какие строки успешно проходят валидацию:

<?php use Illuminate\Support\Facades\Validator; $values = ['user123', 'admin', 'test12345', 'user_123']; foreach ($values as $value) { $validator = Validator::make( ['field' => $value], ['field' => 'alpha_num'] ); $res = $validator->passes() ? 'valid' : 'invalid'; echo "$value: $res\n"; } ?>

Результат выполнения кода:

"user123: valid" "admin: valid" "test12345: valid" "user_123: invalid"

Обратите внимание, что значение 'user_123' не прошло валидацию, так как содержит символ подчёркивания.

Пример с использованием FormRequest

Создадим отдельный класс запроса для валидации данных пользователя:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UserRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'username' => 'required|alpha_num|min:3|max:20', 'password' => 'required|min:8', ]; } } ?>

Теперь используем этот запрос в контроллере:

<?php namespace App\Http\Controllers; use App\Http\Requests\UserRequest; class UserController extends Controller { public function store(UserRequest $request) { $validated = $request->validated(); // Сохранение пользователя return response()->json(['success' => true]); } } ?>

Пример с использованием Rule::alphaNum

Используем класс Rule для более читаемой записи правила:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ 'username' => [ 'required', Rule::alphaNum(), 'max:20', ], ]); if ($validator->fails()) { return response()->json($validator->errors(), 422); } // Обновление пользователя return response()->json(['success' => true]); } } ?>

Пример с локализацией сообщений об ошибках

Настроим кастомное сообщение для правила alpha_num:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UserRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'username' => 'required|alpha_num|min:3|max:20', ]; } public function messages() { return [ 'username.alpha_num' => 'Логин должен содержать только латинские буквы и цифры.', ]; } } ?>

Смотрите также

  • правило alpha,
    которое проверяет только буквы (без цифр)
  • правило alpha_dash,
    которое также разрешает дефисы и подчёркивания
  • правило numeric,
    которое проверяет числовые значения
  • правило string,
    которое проверяет строковые значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить