【发布时间】:2017-10-29 11:45:14
【问题描述】:
我有一个适用于我的开发服务器的自定义验证规则,但是当我将它推送到我的生产服务器时,它变成了错误。它说没有找到方法 [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 和我的控制器上
我的代码有什么问题吗?
谢谢
【问题讨论】:
-
你的错误是
Method [validationFoo] not Found。这似乎与您的自定义规则无关。您的应用程序中可能有一些测试代码。检查有关错误的更多详细信息,并查看它被调用的位置。 -
@Sandeesh 嗨,对不起,我的意思是我的错误是 [validationIsEvenLenght] 未找到。 Validator.php 第 2615 行
-
is_even_length和validationIsEvenLenghtgth和ght之间有错字 -
@linktoahref :sry 看起来我这里有错字。这是我的错误消息:方法 [validateIsEvenLength] 不存在。这是我的自定义验证规则:is_even_length
-
@Sandy 看起来您的自定义规则没有被注册,并且 laravel 默认在它的基类中查找方法。尝试运行
php artisan clear-compiled。您也可以使用use Input;和use Validator;,因为它们已经注册了外观。
标签: laravel validation laravel-5