Laravel用户信息编辑提交后页面刷新无响应问题求助
问题排查及解决方法
字段名不匹配(核心问题)
你的表单里姓名输入框的name属性是first_name:<input type="text" class="form-info" name="first_name" id="first_name" value="{{ $user->name }}">但控制器
update方法的验证规则里验证的是name字段,两者名称不一致,导致required验证直接失败。Laravel验证失败后会自动重定向回表单页,不会执行到dd($data)的代码,也不会有任何默认提示,这就是你看到页面重载无反馈的原因。
解决方法:要么把表单输入框的name改成name,要么把验证规则里的name改成first_name,保持前后一致即可。没有显示验证错误提示
你没有在表单页输出验证错误信息,所以即使验证失败用户也看不到提示,建议在表单合适位置添加错误提示代码,比如:{{-- 全局错误提示 --}} @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif {{-- 也可以给单个字段加错误提示 --}} @error('name') <span class="text-danger">{{ $message }}</span> @enderror更新操作完成后没有返回响应
控制器update方法里执行完$user->update($data)后没有返回重定向响应,验证通过执行到这里会报空白页或者错误,建议补充返回逻辑:public function update(Request $request, User $user) { $data = $request->validate([ // 这里改成和表单一致的字段名,比如你用first_name的话就改成first_name 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], // 如果你需要保存手机号,也要把phone加到验证规则里 'phone' => ['nullable', 'string', 'max:20'] ]); $user->update($data); // 重定向回表单页,带成功提示 return redirect()->route('userPanel.index')->with('success', '个人信息更新成功'); }然后你可以在页面里添加成功提示的展示代码:
@if(session('success')) <div class="alert alert-success"> {{ session('success') }} </div> @endif可选检查:确认你的路由定义正确,
userPanel.update路由确实绑定到userInfoController的update方法,且请求方法支持PATCH。
内容的提问来源于stack exchange,提问作者Mohammadhadi Bagherian
相关产品推荐
相关产品推荐

