Laravel 5中的自定义验证器失败

时间:2016-01-08 22:32:56

标签: php validation laravel

我正在尝试使用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);

0 个答案:

没有答案