Laravel:如何在JavaScript中获取Auth Guard的认证管理员信息?
解决Laravel多认证管理员信息传递到JavaScript的问题
你的问题出在两个关键地方:一是没有把PHP获取到的管理员对象输出到页面中,二是直接输出PHP对象会生成JS无法解析的字符串,必须转换成标准JSON格式。下面给你几种可行的解决方案:
方法一:使用Blade自带的@json指令(推荐)
Laravel Blade提供了@json指令,可以安全地将PHP变量转换成JSON格式,同时自动处理转义问题,用起来非常省心:
var adminData = @json(Auth::guard('admin')->user()); console.log(adminData);
如果需要处理管理员未登录的场景(避免输出null引发的潜在问题),可以加上空值合并运算符做兼容:
var adminData = @json(Auth::guard('admin')->user() ?? null); console.log(adminData);
方法二:手动使用json_encode输出
如果你更习惯原生PHP写法,也可以手动用json_encode将对象转换成JSON字符串,再通过echo输出到页面:
var adminData = <?php echo json_encode(Auth::guard('admin')->user()); ?>; console.log(adminData);
为什么你的原代码无法工作?
你之前的代码<?php Auth::guard('admin')->user();?>只是在PHP层面获取了用户对象,但没有把这个对象的内容输出到HTML页面里,所以JS的data变量实际上拿到的是空内容;另外,就算你直接输出这个PHP对象,它会被转换成类似[object Object]的无效字符串,JS根本无法识别这种格式,必须转换成标准JSON才能被正确解析。
内容的提问来源于stack exchange,提问作者Muzammil Baloch
相关产品推荐
相关产品推荐

