Php 用于验证程序的Laravel自定义服务提供程序
我想重写Php 用于验证程序的Laravel自定义服务提供程序,php,validation,laravel,laravel-4,service-provider,Php,Validation,Laravel,Laravel 4,Service Provider,我想重写illumb\Validation\Validator类中的方法(isvalidable)。为此,我创建了一个类(外部照明),该类扩展了验证器,并且只覆盖isvalidable方法 我认为这会起作用,只是我不确定如何为Validator类(或者实际上是CustomLaravelValidatorclass)创建服务提供者。我以前创建过服务提供程序,但在Validator serviceprovider内部似乎有很多事情要做(light\Validation\ValidationServi
illumb\Validation\Validator
类中的方法(isvalidable
)。为此,我创建了一个类(外部照明),该类扩展了验证器,并且只覆盖isvalidable
方法
我认为这会起作用,只是我不确定如何为Validator类(或者实际上是CustomLaravelValidator
class)创建服务提供者。我以前创建过服务提供程序,但在Validator serviceprovider内部似乎有很多事情要做(light\Validation\ValidationServiceProvider
)。因此,我不知道这个类的定制服务提供者应该是什么样子
这是我的CustomLaravelValidator类:
<?php namespace API\Extensions\Core;
use Illuminate\Validation\Validator;
class CustomLaravelValidator extends Validator {
/**
* Determine if the attribute is validatable.
*
* @param string $rule
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function isValidatable($rule, $attribute, $value)
{
// Validate integers on empty strings as well
if($rule == 'IntStrict')
{
return true;
}
return $this->presentOrRuleIsImplicit($rule, $attribute, $value) &&
$this->passesOptionalCheck($attribute);
}
}
您的服务提供商不需要模仿本机验证器服务提供商。您只需要使用验证器工厂中的解析器
方法注册自定义验证器
use API\Extensions\Core\CustomLaravelValidator;
class CustomValidationServiceProvider extends ServiceProvider {
public function boot()
{
$this->app['validator']
->resolver(function($translator, $data, $rules, $messages)
{
return new CustomLaravelValidator(
$translator,
$data,
$rules,
$messages
);
});
}
}
就这样 对于几年后在这里闲逛的人:当前的方法是使用Validator::extend
扩展验证器外观。看见
use API\Extensions\Core\CustomLaravelValidator;
class CustomValidationServiceProvider extends ServiceProvider {
public function boot()
{
$this->app['validator']
->resolver(function($translator, $data, $rules, $messages)
{
return new CustomLaravelValidator(
$translator,
$data,
$rules,
$messages
);
});
}
}