Php 尝试在Laravel中扩展验证程序时出错

Php 尝试在Laravel中扩展验证程序时出错,php,validation,laravel,laravel-4,Php,Validation,Laravel,Laravel 4,我在Laravel的表格中使用了以下验证: public function isValid($data, $rules) { $validation = Validator::make($data, $rules); if($validation->passes()){ return true; } $this->messages = $validation->messages(

我在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
是输入的post数据。现在我需要添加一个自定义验证扩展,特别是确保输入字段
round2
的值大于输入字段
round1
的值。在查看文档时,我尝试了以下语法,我认为应该是正确的,但我一直得到一个错误

        $validation->extend('manual_capture', function($attribute, $value, $parameters)
        {
            return $value > $parameters[0];
        });
然后我可以用
$attribute='round1'
$value=$data['round1']
$parameters=[$data['round2']]
来调用它


错误是
方法[extend]不存在。
-我不确定我对整个概念的理解是否正确,所以有人能告诉我如何使它工作吗?文档中只有大约两段关于这一点的内容。

请在route.php中添加以下内容

Validator::extend('manual_capture', function($attribute, $value, $parameters)
{
    return $value > $parameters[0];
});
附加文件

然后像这样使用它:

$rules = [ 'foo' => 'manual_capture:30'];

看看@chba这是Laravel 4.2…我也看过了文档,我不明白为什么我的方法不可行。我知道,但我如何将其附加到我的
$validation
变量?这才是真正的问题。当我这样做的时候,没有错误,但是它也不能验证round1/round2关系。你是说如何使用它?是的,我想它可以归结为这一点。我正在查看文档,但看不到如何将此自定义规则添加到现有的
$validation
。我看到了您所做的编辑-对不起,您能再澄清一下吗?如何传递参数?您的示例中的“30”是什么?这一行规则应该以某种方式传递三个内容:要验证的字段、它的值和另一个字段的值,以便我们可以比较它们。我在这里尝试验证的字段称为
foo
,它的值通过
$value
作为参数自动传递给验证规则。我试图与
foo
进行比较的值作为数组通过参数传递,在我的示例中是
30