Метод messages
Метод messages применяется в классе запроса, наследующем FormRequest,
и возвращает массив с пользовательскими сообщениями об ошибках.
Ключами массива являются имена полей и правил в формате 'field.rule',
а значениями - тексты сообщений. Если стандартное сообщение не переопределено,
будет использовано глобальное сообщение из файла языкового пакета.
Синтаксис
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ArticleRequest extends FormRequest
{
public function messages()
{
return [
'field.rule' => 'Custom error message',
];
}
}
?>
Пример
Давайте создадим класс запроса для валидации статьи и переопределим
стандартные сообщения для полей 'title' и 'content':
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ArticleRequest extends FormRequest
{
public function rules()
{
return [
'title' => 'required|string|max:255',
'content' => 'required|string|min:10',
'category_id' => 'required|integer|exists:categories,id',
];
}
public function messages()
{
return [
'title.required' => 'The article title is required.',
'title.max' => 'The title must not exceed 255 characters.',
'content.required' => 'The article content is required.',
'content.min' => 'The content must be at least 10 characters long.',
'category_id.required' => 'Please select a category.',
'category_id.exists' => 'The selected category does not exist.',
];
}
}
?>
Пример
Теперь используем этот запрос в контроллере и посмотрим, какие сообщения будут выведены при ошибках валидации:
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ArticleRequest;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(ArticleRequest $request)
{
$article = Article::create($request->validated());
return response()->json([
'message' => 'Article created successfully',
'article' => $article
]);
}
}
?>
Результат выполнения кода при ошибках валидации:
{
"message": "The article title is required.",
"errors": {
"title": ["The article title is required."]
}
}
Пример
Метод messages позволяет использовать параметры правил
в тексте сообщения с помощью плейсхолдеров :attribute, :min, :max и других:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|min:2|max:50',
'email' => 'required|email|unique:users,email',
'age' => 'required|integer|min:18|max:120',
'password' => 'required|string|min:8|confirmed',
];
}
public function messages()
{
return [
'name.required' => 'The :attribute field is required.',
'name.min' => 'The :attribute must be at least :min characters.',
'name.max' => 'The :attribute may not be greater than :max characters.',
'email.required' => 'We need your email address.',
'email.email' => 'Please enter a valid email address.',
'email.unique' => 'This :attribute is already taken.',
'age.required' => 'Your :attribute is required.',
'age.min' => 'You must be at least :min years old.',
'age.max' => 'The :attribute cannot exceed :max years.',
'password.required' => 'The :attribute is required.',
'password.min' => 'The :attribute must be at least :min characters.',
'password.confirmed' => 'The password confirmation does not match.',
];
}
}
?>
Пример
Метод messages также поддерживает определение сообщений
для всех правил одного поля или для всех полей с одним правилом
с помощью символы *:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SettingsRequest extends FormRequest
{
public function rules()
{
return [
'notifications' => 'required|boolean',
'privacy' => 'required|string|in:public,private,friends',
'timezone' => 'required|string|timezone',
];
}
public function messages()
{
return [
'*.required' => 'This field is required.',
'privacy.*' => 'Invalid privacy setting.',
'timezone.required' => 'Please select your :attribute.',
'timezone.timezone' => 'The :attribute must be a valid timezone.',
];
}
}
?>
Смотрите также
-
метод
rules,
который определяет правила валидации для запроса -
метод
attributes,
который переопределяет имена полей в сообщениях -
метод
authorize,
который определяет авторизацию запроса -
метод
validated,
который возвращает отвалидированные данные