我有一个自定义验证规则,可以在我的开发服务器上运行,但是当我将它推送到我的生产服务器时,它就会出错。它说没有找到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和我的控制器上
我的代码有什么问题吗?
由于
答案 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;
,因为他们已经注册了外墙。