【问题标题】:Extending the Validator class in Laravel在 Laravel 中扩展 Validator 类
【发布时间】:2014-03-29 11:53:38
【问题描述】:

我想在 Laravel 中扩展 Validator 类。然而,在所有示例中,make 方法都用于创建我在Validator source code 中找不到的新实例。我怎样才能覆盖这个方法?构造函数需要一个 TranslatorInterface 实例,所以这似乎不是一个选项?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    make方法其实在Illuminate\Validation\Factory中。

    如果您想扩展此方法,则需要更换 IoC 绑定。只需重载容器中的绑定即可。

    App::bindShared('validator', function($app)
    {
        $validator = new \Your\Validator\Factory($app['translator'], $app);
    
        if (isset($app['validation.presence']))
        {
            $validator->setPresenceVerifier($app['validation.presence']);
        }
    
        return $validator;
    });
    

    【讨论】:

    • 听起来不错,但我不太明白。什么是工厂($app['translator'], $app)?
    • 因此您需要创建自己的 Factory 类来扩展 Illuminate\Validator\Factory。那些构造函数注入的参数是必需的。基本上,您在上面看到的内容来自Illuminate\Validator\ValidationServiceProvider
    猜你喜欢
    • 2016-07-23
    • 2014-01-13
    • 2013-01-15
    • 2016-09-20
    • 2014-03-24
    • 2018-06-10
    • 2014-12-26
    • 1970-01-01
    • 2014-05-18
    相关资源
    最近更新 更多