【发布时间】:2014-03-29 11:53:38
【问题描述】:
我想在 Laravel 中扩展 Validator 类。然而,在所有示例中,make 方法都用于创建我在Validator source code 中找不到的新实例。我怎样才能覆盖这个方法?构造函数需要一个 TranslatorInterface 实例,所以这似乎不是一个选项?
【问题讨论】:
我想在 Laravel 中扩展 Validator 类。然而,在所有示例中,make 方法都用于创建我在Validator source code 中找不到的新实例。我怎样才能覆盖这个方法?构造函数需要一个 TranslatorInterface 实例,所以这似乎不是一个选项?
【问题讨论】:
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;
});
【讨论】:
Factory 类来扩展 Illuminate\Validator\Factory。那些构造函数注入的参数是必需的。基本上,您在上面看到的内容来自Illuminate\Validator\ValidationServiceProvider。