Есть ли способ получить исходные данные в запросе? Я имею в виду, что в моем случае я хочу проверить обновление пользователя в форме. Я хочу, чтобы электронная почта была уникальной для электронных писем в базе данных, кроме электронной почты, которую пользователь написал в форме.
Проверка запроса формы Laravel
comment
Это вполне возможно с помощью встроенных валидаторов: laravel.com/docs/5.5/validation# уникальное правило
- person Jerodev   schedule 02.11.2017
Ответы (3)
В Laravel уже есть правило проверки для этого, вы можете добавить идентификатор пользователя, которого следует игнорировать, в свой уникальный валидатор.
'email' => [
'required',
Rule::unique('users')->ignore($currentUser->id),
]
person
Jerodev
schedule
02.11.2017
Я использовал что-то вроде этого:
'email' => ['sometimes', 'email', 'unique:users,email,'.$user->getKey().','.$user->getKeyName().',deleted_at,NULL', 'string'],
Не уверен, что это лучшее решение, но работает. Мне это не нравится, потому что $user
основан на скрытом вводе из запроса.
person
Epsilon47
schedule
02.11.2017
Вы можете сделать это следующим образом:
'email' => 'unique:users,email,'.$user->id
Идентификатор пользователя позволит вам обновлять запись, но сохранит уникальное ограничение на адрес электронной почты. Кстати, вам не нужно скрытое поле ввода для $user->id.
person
Lars Mertens
schedule
02.11.2017
Я делаю это, потому что форма, которую я обновляю, привязана так:
{!! Form::model($customerAddress, ['route' => 'user.update', 'class' => 'form form-horizontal form-user-data']) !!}
, и я не могу получить доступ к $this->user
в запросе.
- person Epsilon47; 02.11.2017