我有以下基本身份验证的验证规则,用于支付方式的身份验证(高级功能,例如CVD验证,现有卡片等,则由Moneris处理)。
$rules = [
"type" => "required|in:visa,mastercard",
"nickname" => "required",
"credit_card_number" => "required|numeric|digits:16",
"expiry" => "required|string|size:5|date_format:m/y|after:today",
"cvd" => "required|numeric|digits:3"
];
规则expiry
不接受特定的值04/yy
,但它接受03/yy
和05/yy
。我不知道为什么会出现这种情况,但我需要解决它。有人遇到过这种情况吗?
供参考,当我传递04/19
时,结果dd($request->input(), $validator->passes(), $validator->errors());
如下:
array:6 [▼
"type" => "visa"
"nickname" => "Testing"
"credit_card_number" => "4242424242424242"
"expiry" => "04/19"
"cvd" => "123"
"masked_pan" => "************4242"
]
false
MessageBag {#502 ▼
#messages: array:1 [▼
"expiry" => array:1 [▼
0 => "The expiry does not match the format m/y."
]
]
#format: ":message"
}
当我发送
05/19
时,一切都正常工作:array:6 [▼
"type" => "visa"
"nickname" => "Testing"
"credit_card_number" => "4242424242424242"
"expiry" => "05/19"
"cvd" => "123"
"masked_pan" => "************4242"
]
true
MessageBag {#502 ▼
#messages: []
#format: ":message"
}
date_format:"m/y"
周围,就像这里:https://laracasts.com/discuss/channels/laravel/date-format-validation 这样做有什么变化吗? - Jeffdate_format:\"y/m\"
,它会将其视为相同。如果我使用单引号,则对于05/19
会失败。如果我交换引号,它仍然会失败。我不认为这是原因。 - Tim Lewis