Как передать (доступ) ID внутри метода правил в Laravel 5?

Я заполняю форму данными пользователя, используя привязку модели формы.

{!! Form::model($user, ['route' => ['user_update', $user->id]]) !!}

Работает отлично. Когда я нажимаю «Отправить», я ввожу свой запрос UpdateUserRequest, где проверяю свои данные по некоторым правилам. В этом случае я хочу сохранить уникальный адрес электронной почты, но, конечно, нам нужно «пропустить уникальность» для «этой» строки.

У меня есть правило

'email' => 'required|unique:users,email,' . 123456,

и это хорошо работает, когда я временно жестко закодирую этот идентификатор (первичный ключ из таблицы пользователей).

Как получить доступ к этому идентификатору внутри метода правил? (Особенно, когда я передаю $ user_id от контроллера).

  1. Да, Auth :: user () -> id работает, но, очевидно, только для меня. Я занимаюсь также профилями других пользователей.
  2. Я мог бы передать идентификатор этого пользователя в качестве скрытого ввода и получить доступ к нему из запроса / ввода, но я не считаю это хорошим решением, я прав?
  3. То же самое с сегментом URL. Я мог бы получить это из URL, вероятно, но, может быть, есть лучший способ?

Я в методе rules (), и я dd (), но ничего не работает так, как я ожидаю.

Спасибо за любые подсказки! 🙂

0

Решение

Вы можете получить параметры маршрута по их имени с помощью route()->parameter():

$userId = $this->route()->parameter('userId'); // or whatever the name of the parameter is

Или ярлык:

$userId = $this->route('userId');
3

Другие решения

ОК, решение было очень легко.

$this->user->id

Полное правило ниже:

'email' => 'required|unique:users,email,' . $this->user->id,

Работает как шарм!

1

По вопросам рекламы [email protected]