【问题标题】:Laravel custom class validator: TranslatorInterface is not instantiableLaravel 自定义类验证器:TranslatorInterface 不可实例化
【发布时间】:2015-05-14 16:34:48
【问题描述】:

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

这是我的 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.

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

【问题讨论】:

    标签: php validation laravel laravel-4 laravel-validation


    【解决方案1】:

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

    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。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2016-11-14
      • 2018-07-14
      • 1970-01-01
      • 2012-11-27
      • 2018-02-06
      • 2015-01-08
      相关资源
      最近更新 更多