Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel 5中传递(访问)ID inside rules方法?_Php_Laravel_Laravel 5_Model Binding - Fatal编程技术网

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时)

  • 是的,Auth::user()->id可以工作,但显然只适合我。我还处理其他用户的配置文件
  • 我可以将该用户的ID作为输入隐藏,并通过请求/输入访问该用户,但我认为这不是一个好的解决方案,对吗
  • url段也是如此。我可以从url抓取这个,但也许有更好的方法
  • 我是rules()方法的内部人员,我是dd()类人员,但到目前为止,没有任何工作能达到我的预期


    谢谢你的提示!:)

    您可以使用
    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的一部分传递的,所以使用它是有意义的。这就是为什么它首先被传递的原因,因为您需要它来识别您正在使用的确切条目(无论是用于更新、验证还是任何您可以找到的用途)。