未找到Laravel 5.0自定义验证方法

时间:2017-05-29 08:26:33

标签: laravel validation laravel-5

我有一个自定义验证规则,可以在我的开发服务器上运行,但是当我将它推送到我的生产服务器时,它就会出错。它说没有找到Method [validationFoo]。这是我的代码:

AppServiceProvide.php

public function boot()
{
Validator::extend('is_even_length', function($attribute, $value, $params, $validator){
    return strlen($value)%2==0;
});

Validator::replacer('is_even_length', function($message, $attribute, $rule, $params) {
    return str_replace('_', ' ' , 'The '. $attribute .' must have an even length !!' );
});
}

这是我的控制器

  $rules = [
        'test' => 'required|max:16|min:12|is_even_length'
    ];

    $validator = Validator::make(Input::get(),$rules);`

我有包含

    use Illuminate\Support\Facades\Input;
    use Illuminate\Support\Facades\Validator;

在我的AppServiceProvider.php和我的控制器上

我的代码有什么问题吗?

由于

2 个答案:

答案 0 :(得分:1)

这是因为is_even_length

中不存在resources/lang/en/validation.php

在你的启动

Validator::extend('is_even_length', function($attribute, $value, $parameters,  
validator) {
     if(!empty($value) && (strlen($value) % 2) == 0){
         return true;
     }
     return false;
});

然后在resources/lang/en/validation.php添加您的验证消息,如

'is_even_length' => "The :attribute must have an even length.",

答案 1 :(得分:1)

看起来你的自定义规则没有注册,laravel默认是在它的基类中找到方法。尝试运行php artisan clear-compiled。此外,您可以使用use Input;use Validator;,因为他们已经注册了外墙。