我最近一直在尝试使用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);
BadMethodCallException
方法[validateTimezone]不存在。
我查了很多教程,但我找不到我的代码有什么问题。
感谢您的帮助
最高
答案 0 :(得分:1)
当您致电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;
});
您可以在official documentation上阅读有关此内容以及如何注册自己的解析器的更多信息。
答案 1 :(得分:0)
该函数应该是静态的吗?如果您删除static
怎么办?
public function validateTimezone($attribute, $value, $parameters) {
return !empty(Timezones::$timezones[$value]);
}