我正在尝试使用laravel 5的自定义验证器,我打算验证两个字段,以便一个字段大于另一个字段。按照此链接http://goo.gl/3236xn中的步骤操作,但无法使应用程序调用验证方法。任何人都可以提供任何提示吗?
步骤1:创建一个绑定类,您可以在其中实现要扩展Validator类的每个规则,如下所示:
<?php
namespace App\Services;
use \Illuminate\Validation\Validator;
class GreaterThanValidator extends Validator
{
public function validateGreaterThan($attribute, $value, $parameters)
{
if (isset($parameters[1])) {
$other = $parameters[1];
return (floatval($value) > floatval($other)) ;
} else {
return true;
}
}
}
步骤2:创建一个扩展ServiceProvider的服务提供者,如下所示:
<?php
namespace App\Providers;
use Illuminate\Validation\Validator;
use Illuminate\Support\ServiceProvider;
use App\Services\GreaterThanValidator;
class ValidatorsServiceProvider extends ServiceProvider
{
public function boot()
{
Log::info('passando pelo provider...');
\Validator::resolver(function($translator, $data, $rules, $messages) {
Log::info('chamando new...');
return new \App\Services\GreaterThanValidator($translator, $data, $rules, $messages);
});
}
public function register()
{
}
}
步骤3:在config / app.php文件中添加自定义验证器提供程序。
/*
* Application Service Providers...
*/
'App\Providers\AppServiceProvider',
'App\Providers\BusServiceProvider',
'App\Providers\ConfigServiceProvider',
'App\Providers\EventServiceProvider',
'App\Providers\RouteServiceProvider',
'App\Providers\ValidatorsServiceProvider',
我忘了指定,但控制器有以下规则
$rules = array(
'vlFixado' => 'greater_than:vl_anulacao,' . $vlAnulacao,
);
验证:
$validator = Validator::make(Input::all(), $rules, $messages);