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

Метод attributes

Метод attributes класса FormRequest используется для переопределения имён атрибутов полей, которые выводятся в сообщениях об ошибках валидации. Метод должен возвращать массив, где ключами выступают имена полей, а значениями - их человекочитаемые названия. Если не использовать этот метод, Laravel будет выводить в сообщениях об ошибках исходное имя поля.

Синтаксис

<?php class MyRequest extends FormRequest { public function attributes() { return [ 'field_name' => 'Human Readable Name', 'other_field' => 'Another Name' ]; } } ?>

Пример

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

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UserRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'full_name' => 'required|string|max:255', 'email_address' => 'required|email|unique:users,email', 'age' => 'required|integer|min:18' ]; } public function attributes() { return [ 'full_name' => 'Full Name', 'email_address' => 'Email Address', 'age' => 'Age' ]; } } ?>

Теперь используем этот запрос в контроллере. При ошибке валидации пользователь увидит понятные названия полей:

<?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(['message' => 'User created']); } } ?>

Если поле 'full_name' будет пустым, сообщение об ошибке будет выглядеть так:

"The Full Name field is required."

Пример

Метод attributes можно комбинировать с методом messages для полной кастомизации сообщений об ошибках. Определим запрос для формы регистрации:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class RegisterRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'username' => 'required|string|min:3|max:50', 'password' => 'required|string|min:8|confirmed', 'phone' => 'required|string|size:10' ]; } public function attributes() { return [ 'username' => 'Username', 'password' => 'Password', 'phone' => 'Phone Number' ]; } } ?>

При неверном формате номера телефона пользователь получит сообщение с понятным названием поля:

"The Phone Number must be exactly 10 characters."

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

  • метод rules,
    который определяет правила валидации для запроса
  • метод messages,
    который кастомизирует сообщения об ошибках
  • метод authorize,
    который определяет права доступа к запросу
  • метод validated,
    который возвращает отвалидированные данные
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить