Use Case

쿠폰 타입이 정률제(fixedRate) 또는 정액제(flatSum)에 따라 받는 특정 파라메터가 입력되었는지 조건부 유효성 상태검사를 하려고한다.

 

Pseudo Code

if (couponType == 'flatSum') {
	if (! request('flatSum')->isExists()) {
    	throw Exception
    }
}
elseif (couponType == 'fixedRate') {
	if (! request('fixedRate')->isExists()) {
    	throw Exception
    }
}

라라벨 프레임워크에서는 FromRequest에서 다음과 같이 Validation을 수행할 수 있다.

<?php

class CreateCouponRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'title' => ['required'],
            'code' => ['required'],
            'state' => ['required', Rule::in(CouponStateEnum::in())],
            'type' => ['required', Rule::in(CouponTypeEnum::in())],
            'flatSum' => [
                'required_if:type,' . CouponTypeEnum::FLAT_SUM->value,
                'numeric',
            ],
            'fixedRate' => [
                'required_if:type,' . CouponTypeEnum::FIXED_RATE->value,
                'numeric',
            ],
            'expiredDays' => ['required', 'numeric'],
        ];
    }
    
    ...   
}

'Laravel' 카테고리의 다른 글

Laravel, DTO 작성하기  (0) 2024.05.25

+ Recent posts