Php 如何在Laravel 5中传递(访问)ID inside rules方法?
我正在使用表单模型绑定用用户数据填充表单Php 如何在Laravel 5中传递(访问)ID inside rules方法?,php,laravel,laravel-5,model-binding,Php,Laravel,Laravel 5,Model Binding,我正在使用表单模型绑定用用户数据填充表单 {!! Form::model($user, ['route' => ['user_update', $user->id]]) !!} 工作完美。当我点击“提交”时,我输入我的UpdateUserRequest,根据一些规则验证我的输入。在这种情况下,我希望保留唯一的电子邮件地址,但当然我们需要为“this”行“跳过唯一性” 我有个规矩 'email' => 'required|unique:users,email,' . 12345
{!! Form::model($user, ['route' => ['user_update', $user->id]]) !!}
工作完美。当我点击“提交”时,我输入我的UpdateUserRequest,根据一些规则验证我的输入。在这种情况下,我希望保留唯一的电子邮件地址,但当然我们需要为“this”行“跳过唯一性”
我有个规矩
'email' => 'required|unique:users,email,' . 123456,
当我临时硬编码这个ID(users表中的主键)时,它也可以正常工作
如何在rules方法中访问此ID?(特别是当我从控制器传递$user_id时)
谢谢你的提示!:) 您可以使用
route()->parameter()
按名称检索路由参数:
或快捷方式:
$userId = $this->route('userId');
您可以使用
route()->parameter()
按名称检索路由参数:
或快捷方式:
$userId = $this->route('userId');
好的,解决方法非常简单
$this->user->id
完整规则如下:
'email' => 'required|unique:users,email,' . $this->user->id,
工作起来很有魅力 好的,解决方法非常简单
$this->user->id
完整规则如下:
'email' => 'required|unique:users,email,' . $this->user->id,
工作起来很有魅力 我不明白你想达到什么目的:你想在更新用户档案时跳过“唯一性”吗?@DamienPirsy,没错。想象一下,我正在以超级管理员的身份更新某人的个人资料。例如,我正在更改John Doe的用户名,但我保留了他的电子邮件。然后我提交所有内容,Laravel执行验证。Laravel抓取输入电子邮件并将其与数据库中现有的电子邮件进行比较,这在本例中毫无意义,因为我不想触及此字段。如果我留下“必需的|唯一的”,但我将删除“用户、电子邮件、此|用户| ID”,我将永远无法提交表单,原因显而易见。希望现在清楚了。因为用户ID是作为路由url的一部分传递的,所以使用它是有意义的。这就是为什么它首先被传递的原因,因为你需要它来识别你正在使用的确切条目(无论是用于更新、验证还是任何你能找到的用途)。我不明白你想要实现什么:你想在更新用户配置文件时跳过“唯一性”吗?@DamienPirsy,没错。想象一下,我正在以超级管理员的身份更新某人的个人资料。例如,我正在更改John Doe的用户名,但我保留了他的电子邮件。然后我提交所有内容,Laravel执行验证。Laravel抓取输入电子邮件并将其与数据库中现有的电子邮件进行比较,这在本例中毫无意义,因为我不想触及此字段。如果我留下“必需的|唯一的”,但我将删除“用户、电子邮件、此|用户| ID”,我将永远无法提交表单,原因显而易见。希望现在清楚了。因为用户ID是作为路由url的一部分传递的,所以使用它是有意义的。这就是为什么它首先被传递的原因,因为您需要它来识别您正在使用的确切条目(无论是用于更新、验证还是任何您可以找到的用途)。