3

我有一个用户系统,它允许创建帐户、登录和注销程序。

我目前正在处理一个编辑配置文件,它允许编辑全名、用户名等。
对于这个过程,我希望不需要密码,但是,创建和登录过程需要它。

有没有办法在 Laravel 中支持这一点?

我考虑过检测 Input::get('password') 的存在,如果没有,则通过原始密码,但是,这将重新散列

因此,总而言之,我希望在创建时需要密码字段,而不是在更新过程中。或者,如果有另一种方法可以达到同样的目的,那么我愿意接受。

作为参考,我正在使用JeffreyWay/Laravel-Model-Validators来处理保存过程中的验证。

4

1 回答 1

4

您可能无法使用此软件包执行此操作。但是,您可以手动创建此类功能,例如创建 2 个方法来选择验证所需的字段,一个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;
}
于 2014-10-15T22:19:44.087 回答