Обновление формы - пустое поле - PullRequest
1 голос
/ 17 июня 2020

У меня проблема при обновлении ресурса. В панели администратора моей компании у нас есть доступ к пользователям, и мы можем редактировать их данные. В большинстве случаев мы не будем обновлять пароль, поэтому поле будет пустым, но база данных не принимает пароль как нулевой. Есть ли какое-либо правило, которое можно добавить в мой FormRequest, которое игнорирует поле, если поле имеет значение NULL? Я просмотрел документы, но не нашел, как это сделать.

Метод html, если отправка с method('patch').

Запрос:

public function rules()
{
    return [
        'user_id' => ['bail', 'required', 'numeric'],
        'name' => ['bail', 'required', 'string'],
        'user_name' => ['bail', 'required', 'string'],
        'email' => ['bail', 'required', 'email:rfc,dns,filter'],
        'password' => ['nullable'],
        'groups' => ['bail', 'required'],
        'groups.*' => ['numeric'],
    ];
}

РЕДАКТИРОВАТЬ 1: Я мог бы удалить пароль из проверенных данных, если пароль равен нулю, но не кажется, что это правильный способ сделать это.

// If the user inserted a new password, HASH it
if ($validated_data['password'] !== null)
{
    $validated_data['password'] = Hash::make($validated_data['password']);
} else {
    unset($validated_data['password']);
}

dd($validated_data);

С уважением

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Старайтесь не передавать параметр «пароль» в полезных данных запроса. Надеюсь, вы знаете, что метод обновления QB Laravel действительно позволяет обновлять выборочные поля. Если вы не пройдете, он не будет обновляться.

1 голос
/ 17 июня 2020

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

итак, в ваших правилах:

 'password' => ['nullable'],

имеет смысл ...

в контроллере вы можете использовать rule-required-if :

$old_password=$user?$user->password:null;

Validator::make($validated_data, [
    'password' => Rule::requiredIf(old_password==null),
]);

if ($validated_data['password'] !== null)
{
    $validated_data['password'] = Hash::make($validated_data['password']);
} 

Я настоятельно рекомендую не устанавливать пароль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...