Laravel自定义表单中如何通过Session显示登录用户邮箱
Laravel自定义表单显示登录用户邮箱的解决方案
推荐方案:利用Laravel内置Auth系统
Laravel的身份验证模块已经自动管理了登录用户的会话,无需额外配置Session,直接通过Auth工具就能获取用户信息:
视图内直接调用Auth助手函数
把你的输入框代码替换为:
<input type="text" name="email" value="{{ auth()->user()->email }}">
若需保留$user->email写法
在对应页面的控制器方法中,将登录用户实例传递到视图:
public function yourFormAction() { $user = auth()->user(); return view('your-form-blade-file', compact('user')); }
这样原代码<input type="text" name="email" value="{{$user->email}}">即可正常渲染邮箱。
备选方案:直接从Session读取(不推荐)
Laravel登录后会将用户ID存储在Session中(键名取决于config/session.php的cookie配置,默认类似login_web_xxxx),可通过ID查询用户获取邮箱,但这种方式不够灵活且效率较低:
<input type="text" name="email" value="{{ App\Models\User::find(session('login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d'))?->email }}">
防报错处理
若页面可能被未登录用户访问,需增加判断避免空指针错误:
<input type="text" name="email" value="{{ auth()->check() ? auth()->user()->email : '' }}">
内容的提问来源于stack exchange,提问作者Shafer th
相关产品推荐
相关产品推荐

