我一直在Laravel中使用以下验证:
public function isValid($data, $rules)
{
$validation = Validator::make($data, $rules);
if($validation->passes()){
return true;
}
$this->messages = $validation->messages();
return false;
}
传递给它的规则很简单:
$rules = [
'name' => 'required',
'type' => 'required'
];
而$data
是输入发布数据。现在我需要为此添加自定义验证扩展,专门用于确保输入字段round2
的值大于输入字段round1
的值。看看文档,我尝试了以下语法,我认为应该是正确的,但我一直都会收到错误。
$validation->extend('manual_capture', function($attribute, $value, $parameters)
{
return $value > $parameters[0];
});
然后我可以使用$attribute = 'round1'
,$value = $data['round1']
和$parameters = [$data['round2']]
来调用它。
错误是Method [extend] does not exist.
- 我不确定我对这整个概念的理解是否正确,有人可以告诉我如何使它工作吗?这些文档只有大约2个段落。
答案 0 :(得分:2)
将以下内容放入route.php
class User < ActiveRecord::Base
before_update :check_profile
after_update :notify_profile_completed
def is_complete?
# run some tests
end
private
def check_profile
self.complete = is_complete? # Assuming complete is a column in User class
end
def notify_profile_completed
if is_complete? and !complete
# send notification
end
end
end
其他文档here
然后像这样使用它:
Validator::extend('manual_capture', function($attribute, $value, $parameters)
{
return $value > $parameters[0];
});