没有内置的验证可以让你像在Laravel中那样比较字段值,所以你需要实现一个自定义验证器,这样你就可以在需要时重用验证。幸运的是,Laravel使编写自定义验证器变得非常容易。
从在 yor AppServiceProvider 中定义新的验证器开始:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('greater_than_field', function($attribute, $value, $parameters, $validator) {
$min_field = $parameters[0];
$data = $validator->getData();
$min_value = $data[$min_field];
return $value > $min_value;
});
Validator::replacer('greater_than_field', function($message, $attribute, $rule, $parameters) {
return str_replace(':field', $parameters[0], $message);
});
}
}
现在,您可以在$rules中使用全新的验证规则:
$rules = [
'initial_page' => 'required_with:end_page|integer|min:1|digits_between: 1,5',
'end_page' => 'required_with:initial_page|integer|greater_than_field:initial_page|digits_between:1,5'
];
你将在此处找到有关创建自定义验证程序的详细信息:http://laravel.com/docs/5.1/validation#custom-validation-rules。它们易于定义,然后可以在验证数据的任何位置使用。