【发布时间】:2019-06-25 07:39:37
【问题描述】:
对于支付方式的基本身份验证,我有以下验证规则(高级事物,如 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"
}
【问题讨论】:
-
你使用的是什么版本的 Laravel?可能与此有关:github.com/laravel/framework/issues/21467
-
查看一些线程,我看到用户在
date_format:"m/y"周围加上引号,就像这里:laracasts.com/discuss/channels/laravel/date-format-validation 有什么改变吗? -
对不起,Laravel 5.4 是版本。我会试试那个杰夫;看看有没有什么不同。
-
@Jeff 如果我这样做
date_format:\"y/m\",它会将其视为相同。如果我使用单引号,05/19会失败。如果我交换引号,它仍然会失败。我不认为是这样。
标签: php laravel validation date laravel-5.4