我最近一直在尝试 Laravel 4,并尝试让自定义验证类发挥作用。
验证类
<?php
class CountdownEventValidator extends Validator {
public function validateNotFalse($attribute, $value, $parameters) {
return $value != false;
}
public function validateTimezone($attribute, $value, $parameters) {
return !empty(Timezones::$timezones[$value]);
}
}
我的规则设置如下:
protected $rules = [
'title' => 'required',
'timezone' => 'timezone',
'date' => 'not_false',
'utc_date' => 'not_false'
];
我在模型中调用验证器,如下所示:
$validation = CountdownEventValidator::make($this->attributes, $this->rules);
我收到以下错误:
错误方法调用异常
方法 [validateTimezone] 不存在。
我查了很多教程,但我找不到我的代码有什么问题。
感谢您的帮助
Max
你打电话时Validator::make
你实际上是在打电话Illuminate\Validation\Factory::make
尽管该方法本身是非静态的。当你击中Validator
在类中,您正在通过外观,在后台,调用看起来像这样。
App::make('validator')->make($this->attributes, $this->rules);
然后它返回一个实例Illuminate\Validation\Validator
.
您可以注册自己的规则Validator::extend
或者您可以注册自己的解析器。我建议,现在,您只需使用自己的规则扩展验证器Validator::extend
.
Validator::extend('not_false', function($attribute, $value, $parameters)
{
return $value != false;
});
您可以在以下位置阅读有关此内容以及如何注册您自己的解析器的更多信息官方文档 http://laravel.com/docs/validation#custom-validation-rules.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)