1

我对自定义类验证器有疑问。

这是我的 CustomValidator.php

<?php
use Illuminate\Validation\Validator;


class CustomValidator extends Validator {


    public function validateEmailExistence($attribute, $value, $parameters)
    {
        //check email existence
    }

}

在 validators.php 中调用该类

Validator::extend('check_email', 'CustomValidator@validateEmailExistence');

在 bindings.php 中解析验证器

Validator::resolver(function($translator, $data, $rules, $messages)
{
    return new CustomValidator($translator, $data, $rules, $messages);
});

当我运行时,我收到此错误:

  Target [Symfony\Component\Translation\TranslatorInterface] is not instantiable.

如果我通过匿名函数扩展验证器,它工作正常。我知道这是接口绑定的问题,但我不知道应该使用哪个实现。

4

1 回答 1

0

您的代码对我来说似乎没问题,但请尝试创建服务提供者并将其注册到应用程序配置文件中。

class ValidationServiceProvider extends ServiceProvider
{
    public function register()
    {

    }

    public function boot()
    {
        $this->app->validator->resolver(function($translator, $data, $rules, $messages) {
            return new CustomValidator($translator, $data, $rules, $messages);
        });
    }
}

注意:在创建服务提供者后执行 composer dumpauto。

如果您仍然收到错误,请告诉我。

于 2015-03-12T14:44:50.553 回答