我有一个允许帐户创建,登录和注销程序的用户系统。
我目前正在制作编辑个人资料,允许编辑全名,用户名等 对于此过程,我希望不需要密码,但是,创建和登录过程需要密码。
有没有办法在Laravel中支持这个?
我考虑过检测是否存在Input :: get('password'),如果没有,则通过原始密码,这会重新哈希
因此,总而言之,我希望在创建时需要密码字段,而不是在更新过程中。或者,如果有另一种方法可以达到同样的目的,那么我愿意接受它。
作为参考,我正在使用JeffreyWay/Laravel-Model-Validators来处理保存过程中的验证。
答案 0 :(得分:3)
使用此软件包可能无法做到这一点。但是,您可以手动创建此类功能,例如创建两个选择必要字段进行验证的方法,一个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;
}