Я заполняю форму данными пользователя, используя привязку модели формы.
{!! Form::model($user, ['route' => ['user_update', $user->id]]) !!}
Работает отлично. Когда я нажимаю «Отправить», я ввожу свой запрос UpdateUserRequest, где проверяю свои данные по некоторым правилам. В этом случае я хочу сохранить уникальный адрес электронной почты, но, конечно, нам нужно «пропустить уникальность» для «этой» строки.
У меня есть правило
'email' => 'required|unique:users,email,' . 123456,
и это хорошо работает, когда я временно жестко закодирую этот идентификатор (первичный ключ из таблицы пользователей).
Как получить доступ к этому идентификатору внутри метода правил? (Особенно, когда я передаю $ user_id от контроллера).
Я в методе rules (), и я dd (), но ничего не работает так, как я ожидаю.
Спасибо за любые подсказки! 🙂
Вы можете получить параметры маршрута по их имени с помощью route()->parameter()
:
$userId = $this->route()->parameter('userId'); // or whatever the name of the parameter is
Или ярлык:
$userId = $this->route('userId');
ОК, решение было очень легко.
$this->user->id
Полное правило ниже:
'email' => 'required|unique:users,email,' . $this->user->id,
Работает как шарм!