Laravel验证模型

时间:2013-08-24 08:23:51

标签: php forms validation model laravel-4

我在Laravel 4应用程序中创建了一个Employer模型,在Employer.php中,我创建了以下函数来验证用户输入,然后将其保存到数据库中:

public static function validate($input)
{
    $validator = Validator::make($input, static::$rules);

    if ($validator->fails() {
        return $validator;
    }

    return true;
}

当我在数据库中创建新记录时,这很好用,因为我传递的是我指定了特定字段的所有规则的值。

但是,数据库中有某些字段我不希望用户在创建后进行编辑(例如,business_name)。在控制器的编辑方法中,我创建一个表单并从表单中省略这些字段。但验证失败,因为business_name需要$rules

作为临时工作,我尝试在编辑表单中创建隐藏字段并使用business_name填充它。但是,当我将表单修改为update方法时,这也必须是唯一的并且失败!

有什么建议吗?有什么方法可以指定应该应用哪些验证规则,具体取决于调用它的方法?或者我应该在Employer.php中专门创建一个新方法来验证更新方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用required_without验证规则。由于新实例化的模型还没有id字段,因此只有在id不存在时才需要某些字段。这应该有效:

public static $rules = array(
    'business_name' => 'required_without:id'
);

http://laravel.com/docs/validation#rule-required-without