我有一个表单,其中包含一个字段供用户输入特定付款的金额值。此字段是类型编号的输入。
Laravel中此输入的验证规则是:
'amount' => 'required|numeric'
当我输入英文金额时:1500 =>
验证通过,一切正常。
但是当我输入阿拉伯语中的金额时:١٥٠٠ =>
验证失败,并显示以下错误消息:
" validation.numeric"
我应该手动验证此字段还是有其他解决此问题的方法?
答案 0 :(得分:1)
也许您可以创建自己的验证类型。
您可以在app/Providers/AppServiceProvider.php
中的引导方法中添加类似这样的内容。
Validator::extend('arabic_numbers', function ($attributes, $value, $parameters, $validation) {
$arabic_numbers = [
'٥',
'١',
// add more
];
$input = $value;
if (!$input) {
return false;
}
$chars = preg_split('//u', $input, -1, PREG_SPLIT_NO_EMPTY);
foreach ($chars as $char) {
if (!in_array($char, $arabic_numbers)) {
return false;
}
}
return true;
});
您可以添加到现有规则,例如required|arabic_numbers
。
或者使用这样的东西:
$input = '١';
$validator = Validator::make([
'user_input' => $input,
], [
'user_input' => 'required|arabic_numbers'
];
if ($validator->fails()) {
//
}
您还可以在许多其他方式中使用,例如在自定义请求中使用:
public function rules()
{
return [
'something' => 'required|arabic_numbers',
];
}
希望这有帮助。