Правило email
Правило email используется для проверки, что значение поля
является корректным адресом электронной почты. Это правило
применяется при валидации данных форм в Laravel и проверяет
соответствие формата стандартным требованиям RFC 5322.
Правило может быть использовано как строка или с дополнительными
параметрами для указания типа валидации.
Синтаксис
Базовый синтаксис правила email в массиве правил валидации:
<?php
'email' => 'required|email'
?>
С дополнительными параметрами:
<?php
'email' => 'required|email:rfc,strict'
?>
Пример
Давайте создадим контроллер с методом для обработки формы регистрации пользователя с валидацией email:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8',
]);
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422);
}
return response()->json([
'message' => 'User registered successfully'
]);
}
}
?>
Результат выполнения кода при корректных данных:
"User registered successfully"
Результат выполнения кода при некорректном email:
{
"errors": {
"email": ["The email must be a valid email address."]
}
}
Пример
Рассмотрим использование правила email с различными
вариантами валидации в классе FormRequest:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => 'required|string|max:100',
'email' => 'required|email:rfc,strict|max:255',
'password' => 'required|min:8|confirmed',
];
}
public function messages(): array
{
return [
'email.email' => 'Поле email должно быть корректным адресом электронной почты.',
'email.required' => 'Поле email обязательно для заполнения.',
];
}
}
?>
Пример
Давайте используем правило email в Blade-шаблоне формы
регистрации с выводом ошибок валидации:
<form method="POST" action="/register">
@csrf
<div>
<label for="name">Name:</label>
<input type="text" id="name" name="name" value="{{ old('name') }}">
@error('name')
<span class="error">{{ $message }}</span>
@enderror
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="{{ old('email') }}">
@error('email')
<span class="error">{{ $message }}</span>
@enderror
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password">
@error('password')
<span class="error">{{ $message }}</span>
@enderror
</div>
<button type="submit">Register</button>
</form>
Пример
Рассмотрим валидацию нескольких email-адресов с использованием
правила email для массива данных:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class EmailController extends Controller
{
public function validateMultipleEmails(Request $request)
{
$validator = Validator::make($request->all(), [
'emails' => 'required|array|min:1',
'emails.*' => 'required|email:rfc,strict'
]);
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422);
}
$emails = $request->input('emails');
return response()->json([
'message' => 'All emails are valid',
'count' => count($emails)
]);
}
}
?>
Результат выполнения кода при корректных данных:
{
"message": "All emails are valid",
"count": 3
}