Обязательное поле Laravel при обновлении модели

У меня есть система Users, которая позволяет создавать учетные записи, входить и выходить из системы.

В настоящее время я работаю над редактированием профиля, который позволяет редактировать полное имя, имя пользователя и т. Д.
Для этой процедуры я бы хотел, чтобы пароль не требовался, однако он должен быть обязательным для процедур создания и входа в систему.

Есть ли способ поддержать это в Laravel?

Я думал об обнаружении присутствия Input :: get (‘password’) и, если нет, проходя через оригинальный пароль, однако, это повторно хэш

Итак, подведем итог: я хотел бы, чтобы поле пароля было обязательным при создании, а не при процедурах обновления. В качестве альтернативы, если есть другой способ достичь той же цели, тогда я открыт для этого.

Для справки я использую JeffreyWay / Laravel-Model-валидаторы который обрабатывает проверку в рамках процедуры сохранения.

2

Решение

Вероятно, вы не можете сделать это с помощью этого пакета. Однако вы можете создать такую ​​функциональность вручную, например, создав 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;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]