【问题标题】:Laravel Required Field on Model UpdateLaravel 模型更新必填字段
【发布时间】:2014-12-11 02:10:07
【问题描述】:

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

我目前正在编辑个人资料,它允许编辑全名、用户名等。
对于此过程,我希望不需要密码,但是,创建和登录过程需要密码。

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

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

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

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

【问题讨论】:

    标签: php validation laravel laravel-4 laravel-validation


    【解决方案1】:

    您可能无法使用此软件包执行此操作。但是,您可以手动创建此类功能,例如创建 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;
    }
    

    【讨论】:

    • 谢谢你,我会试一试。
    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2011-12-02
    • 2010-11-11
    相关资源
    最近更新 更多