【发布时间】:2019-07-01 12:58:17
【问题描述】:
我已经创建了自定义验证器:
namespace App\Validators;
class PhoneValidationRule extends \Illuminate\Validation\Validator {
public function validatePhone($attribute, $value, $parameters)
{
return preg_match("/^[\+]?[-()\s\d]{4,17}$/", $value);
}
}
并注册:
class ValidatorServiceProvider extends ServiceProvider {
public function boot()
{
\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new PhoneValidationRule($translator, $data, $rules, $messages);
});
}
...
如果我将它称为字段,它工作正常:
$validator = Validator::make($input, [
'emails' => 'required|each:email',
'phone' => 'required|phone',
]);
但是当我尝试将它应用于数组时:
$validator = Validator::make($input, [
'emails' => 'required|each:email',
'phones' => 'required|each:phone',
]);
我收到错误消息:
错误:{类型:“BadMethodCallException”,消息:“方法 [validateEach] 不存在。",…} 文件: “/home/.../vendor/laravel/framework/src/Illuminate/Validation/Validator.php” 行:2564 消息:“方法 [validateEach] 不存在。”类型: "BadMethodCallException"
我做错了什么?
【问题讨论】:
-
这是我第一次看到
each。这是自定义规则吗? -
@Mozammil 不,它是原生的 - 检查 the line 231
标签: php arrays laravel validation laravel-4.2