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

时间:2015-10-07 11:51:33

标签: 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();

        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个段落。

1 个答案:

答案 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];
});