Php 当密码输入字段为空时,如何避免在Laravel中更新密码?
我在laravel中获得了此代码,允许管理员更新用户的密码:Php 当密码输入字段为空时,如何避免在Laravel中更新密码?,php,laravel,Php,Laravel,我在laravel中获得了此代码,允许管理员更新用户的密码: public function editarmembro(Request $dados) { $validatedData = $dados->validate([ 'name' => 'required', 'email' => 'required', 'credencial' => 'required',
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.');
}
我的问题是,如果他将密码字段留空,我会看到一个错误屏幕,显示密码字段不能为空。如果他将密码字段留空,我希望我的代码不会更新密码,但如果他在密码字段中插入了内容,我希望代码会更新
请提供帮助。如果它是空的,您可以将其从
$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\u 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);
您只需将所有值(密码除外)合并到数组中,密码仅在存在/设置为:
$your_array = [
'name' => $dados['name'],
'email' => $dados['email'],
'credencial' => $dados['credencial'],
'sobre' => $dados['sobre'],
'updated_at' => Carbon::now(),
];
DB::table('users')->where('id', $dados['id'])->update(
empty($dados['password']) ? $your_array : array_merge($your_array, ['password' => $dados['password']])
);