Laravel 自定义验证规则如何获取同一个表单中其他字段值?

不想写在控制器中,所以才会有这个问题出现

表单中有三个字段username password sign.

sign值的验证需要和username password的值有一定规则的联系。
比如 sign = md5($username.$password)

在自定义验证规则中,使用闭包

$validator = Validator::make($request->all(), [
    'sign' => [
        'required',
        'max:255',
        function ($attribute, $value, $fail) {
            //这里如何获取 username,和password的值呢?
        },
    ],
]);

看了下confirmed规则的源码

    /**
     * Validate that an attribute has a matching confirmation.
     *
     * @param  string  $attribute
     * @param  mixed   $value
     * @return bool
     */
    public function validateConfirmed($attribute, $value)
    {
        return $this->validateSame($attribute, $value, [$attribute.'_confirmation']);
    }

$attribute在自定义中获取不到其他值…

请问大家有解决办法吗?

面向Google编程
drinke9
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

你这个是在控制器吧

function ($attribute, $value, $fail) use($request) {}

应该可以, 如果在 request 验证类里面的话,

 this->get('xxx')
4年前 评论
drinke9 (楼主) 4年前
讨论数量: 3
function ($attribute, $value, $fail)  use ($request){
    // $request->username
    // $request->password
    //这里如何获取 username,和password的值呢?
 },
4年前 评论
drinke9 (楼主) 4年前

你这个是在控制器吧

function ($attribute, $value, $fail) use($request) {}

应该可以, 如果在 request 验证类里面的话,

 this->get('xxx')
4年前 评论
drinke9 (楼主) 4年前

$this->input('field')

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!