1

Employer在我的 Laravel 4 应用程序中创建了一个模型,并且在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专门创建一个新方法来验证更新方法?

4

1 回答 1

2

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

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

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

于 2013-08-24T09:12:22.537 回答