访问自定义规则类中的另一个请求的输入-Laravel [英] Access to another requested input in custom rule class - Laravel

查看:47
本文介绍了访问自定义规则类中的另一个请求的输入-Laravel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要通过pass方法访问 $ request->重要.我需要它来基于此值验证名称

I need to access $request->important in passes method. I need it to validate name based on this value

class TestCustom implements Rule
{
    public function passes($attribute, $value)
    {
        // 
    }

    public function message()
    {
        return 'some txt';
    }
}

像这样使用:

use App\Rules\TestCustom;

$request->validate([
    'name' => ['required', new TestCustom],
    'important' => ['required', 'string'],
]);

推荐答案

最好将数据传递给规则构造函数,然后在规则内部使用它.这样,您就可以使用规则来验证不同的数据源,以防万一它不是来自请求.

It's much better to pass data to rule constructor and use it inside rule afterwards. This way you can use rule to validate different data sources, in case if it comes not from request.

class TestCustom implements Rule
{
    private $data;

    public function __construct(array $data)
    {
        $this->data = $data;
    }

    public function passes($attribute, $value)
    {
        // Use $this->data['important'] for validation
    }

    public function message()
    {
        return 'some txt';
    }
}

然后将数据传递给规则:

Then pass data to rule:

使用App \ Rules \ TestCustom;

use App\Rules\TestCustom;

$request->validate([
    'name' => ['required', new TestCustom($request->all())],
    'important' => ['required', 'string'],
]);

这篇关于访问自定义规则类中的另一个请求的输入-Laravel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆