Laravel模型更新时必填字段

3
我有一个用户系统,允许创建账户、登录和注销过程。
我正在开发“编辑个人资料”功能,允许编辑姓名、用户名等信息。对于此过程,我希望密码不是必需的,但在创建和登录过程中需要密码。
在Laravel中是否有支持此功能的方法?
我考虑检测Input::get('password')的存在,如果不存在,则传递原始密码,但这将重新哈希。
因此,总结一下,我希望在创建时要求密码字段,但在更新过程中不需要。或者,如果有其他方法可以实现相同的目的,我也很乐意尝试。
供参考,我使用的是JeffreyWay/Laravel-Model-Validators,它在保存过程中处理验证。
1个回答

4

可能您不能使用这个包来完成此操作。但是,您可以手动创建这样的功能,例如创建两个方法来选择需要验证的字段,一个User类的片段:

protected static $rules
    = [
        'name'            => 'required|min:3|max:60',          
        'password'        => [
            'required',
            'min:10'
        ],

    ];


public static function validateRegistration($data, $translation)
{
    return self::validate($data, $translation);
}

public static function validateUpdate($data, $translation)
{

    $rules = self::$rules;
    if (trim($data['password']) == '') {
        unset($rules['password']); // unsetting unwanted password rule
    }
    return self::validate($data, $translation, $rules);
}

public static function validate($data, $translation, $rules = null) 
{
    if (is_null($rules)) {
        $rules = self::$rules;
    }

    $v = Validator::make($data, $rules, $translation);

    if ($v->fails()) {
        self::$errors = $v->messages()->toArray();
        return false;
    }

    return true;
}

谢谢,我会试一下的。 - Dan Hanly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接