如何使用Request类进行验证

问题描述 投票:0回答:2

如何在没有依赖注入的情况下验证请求?

我需要在同一个帖子中验证两个不同的东西。例如,我需要为条目运行基本验证,但我还需要验证信用卡信息,付款方式可能会更改,这就是我不在基本条目请求中添加信用卡数据的原因。

在我的方法中,我有:

public method create (EntryRequest $request) {

Validator::make($request->all(), 
[rules] 
}

但我已经在CreditCardRequest中制定了我的规则。如何将规则应用于该请求?

Like Validator::make($request->all(), new CreditCardRequest())
php laravel laravel-validation
2个回答
1
投票

您可以在表单请求类中进行条件验证。因此,如果您只想验证信用卡字段,如果payment_methodcard,那么您可以这样做:

class StorePaymentRequest extends FormRequest
{
    public function rules()
    {
        return [
            'payment_method' => ['required', 'in:card,paypal'],
            // Any other basic rules for the request
        ];
    }

    public function withValidator($validator)
    {
        // Conditionally add validation rules depending on incoming data

        $validator->sometimes('card_number', 'required', function ($input) {
            return $input->payment_method == 'card';
        });

        $validator->sometimes('expiry_date', 'required', function ($input) {
            return $input->payment_method == 'card';
        });

        $validator->sometimes('cvc', 'required', function ($input) {
            return $input->payment_method == 'card';
        });
    }
}

文档:https://laravel.com/docs/5.8/validation#conditionally-adding-rules


0
投票

我相信你的意思是这样的!您包含自己的StoreRequest文件,并使用它来进行验证。

use App\Http\Requests\CreditCardRequest;

public function store(CreditCardRequest $request)
{    
    $data = $request->validated();
}
© www.soinside.com 2019 - 2024. All rights reserved.