如何在 Laravel 5 中的规则方法中传递(访问)ID?

How to pass (access) ID inside rules method in Laravel 5?

我正在使用表单模型绑定使用用户数据填充我的表单。

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

完美运行。当我点击 "Submit" 时,我输入了我的 UpdateUserRequest,我在其中根据某些规则验证了我的输入。在这种情况下,我想保留唯一的电子邮件地址,但当然我们需要 "skip uniqueness" 用于 "this" 行。

我有一个规则

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

当我临时硬编码此 ID(来自用户 table 的主键)时,它也能很好地工作。

如何在规则方法中访问这个ID? (特别是当我从控制器传递 $user_id 时)。

  1. 是的,Auth::user()->id 有效,但显然只适合我。我还处理其他用户的个人资料。
  2. 我可以将此用户的 ID 作为输入隐藏并通过请求/输入访问它,但我认为这不是一个好的解决方案,对吗?
  3. 同url段。我可能可以从 url 获取这个,但也许有更好的方法?

我在 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,

很有魅力!