gpt4 book ai didi

php - 当密码输入字段留空时,如何避免在 Laravel 中更新密码?

转载 作者:行者123 更新时间:2023-12-03 00:08:29 25 4
gpt4 key购买 nike

我在 laravel 中得到了这段代码,它允许管理员更新用户的密码:

public function editarmembro(Request $dados)    {

$validatedData = $dados->validate([

'name' => 'required',
'email' => 'required',
'credencial' => 'required',

]);

$dados = $dados->all();

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

DB::table('users')->where('id', $dados['id'])->update(
[ 'name' => $dados['name'], 'email' => $dados['email'], 'credencial' => $dados['credencial'], 'password' => $dados['password'], 'sobre' => $dados['sobre'], 'updated_at' => Carbon::now(), ]
);

return redirect()->route('membros')->with('mensagemSucesso', 'As informações do membro "'.$dados['name'].'" foram atualizadas com sucesso.');

}

我的问题是,如果他将密码字段留空,我会收到一个错误屏幕,指出密码字段不能为 NULL。如果他将密码字段留空,我希望我的代码不更新密码,但如果他在密码字段中插入某些内容,则要更新密码。

请帮忙。

最佳答案

如果 $dados 数组为空,您可以将其从数组中删除:

if (!empty($dados['password'])) 
$dados['password'] = Hash::make($dados['password']);
else
unset($dados['password']);

或使用三元运算符

!empty($dados['password'])? $dados['password'] = Hash::make($dados['password']): unset($dados['password']);

由于所有字段的名称都与请求的名称相匹配,并且 updated_at 字段应该自动完成,因此您无需重新组装数组来进行更新。

DB::table('users')->where('id', $dados['id'])->update($dados);
<小时/>

如果你想重新组装数组,你可以这样做

$update_dados = [ 
'name' => $dados['name'],
'email' => $dados['email'],
'credencial' => $dados['credencial'],
'sobre' => $dados['sobre'],
'updated_at' => Carbon::now(),
];

if (!empty($dados['password']))
$update_dados['password'] = Hash::make($dados['password']);

DB::table('users')->where('id', $dados['id'])->update($update_dados);

关于php - 当密码输入字段留空时,如何避免在 Laravel 中更新密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60330095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com