Правило same
Правило same проверяет, совпадает ли значение проверяемого поля со значением указанного поля. Оно часто применяется для подтверждения ввода, например, при повторном вводе пароля или email. Правило принимает один параметр - имя поля, с которым сравнивается значение.
Синтаксис
<?php
$rules = [
'field_name' => 'same:other_field',
];
?>
В качестве параметра передаётся имя поля, с которым нужно сравнить значение.
Пример
Давайте проверим, что поле 'password' совпадает с полем 'password_confirmation':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
public function register(Request $request)
{
$rules = [
'password' => 'required|string|min:8',
'password_confirmation' => 'required|same:password',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return $validator->errors();
}
return 'Validation passed';
}
}
?>
Результат выполнения кода при несовпадающих паролях:
["The password confirmation does not match."]
Результат выполнения кода при совпадающих паролях:
"Validation passed"
Пример
Проверим совпадение полей 'email' и 'email_confirmation':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function updateEmail(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'email_confirmation' => 'required|same:email',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json('Email confirmed successfully');
}
}
?>
Результат выполнения кода при несовпадающих email:
["The email confirmation does not match."]
Пример
Используем правило same в классе FormRequest для проверки пароля:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
];
}
}
?>
Обратите внимание, что правило confirmed автоматически создаёт правило same для поля 'password_confirmation'. Это эквивалентно записи:
<?php
$rules = [
'password' => 'required|min:8',
'password_confirmation' => 'required|same:password',
];
?>