后端给前端传了一个参数,不知道是不是写法错误



一直报错,点击红色圈起来的地方就可以运行,代码也被修改了

代码修改后里面的if,else 语句就没有办法执行了,登录页没有输出数值
控制器代码,有传$member的值

修改if的语法后不报错了,但是没有办法正常输出登陆数值
![

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 9

已经很明显了,你的控制器里有分支条件很关键:

if(!$data['item']){
    return view('shop/page404');
}

你以为你的代码会向下执行到最后view('shop/detail'),但实际是提前进入了view('shop/page404'),在shop/page404页面里,有公共的 header.blade.php 模板。再回头看你的控制器,在进入分支流程时,没有给$data赋值member键名,导致shop/page404中的公共模板报错。

解决办法就是把$data['member'] = $member; 这句代码向前移动,放到 $member = Auth::guard('member')->user(); 后即可。

4年前 评论

控制器的代码贴出来看看?

4年前 评论
@if($member && $member->phone)

试试这个,但根本原因是没有在 Controller 中定义保存这个变量导致的。

4年前 评论
PYA_24 (楼主) 4年前

在用户没有登录时,可以传$member=null

否则在判断时,应该用if(isset($member))来判断member变量是否存在

需要看看你在controller里是怎么给member赋值的

4年前 评论
aa24615 4年前
PYA_24 (楼主) 4年前

建议代码贴全

4年前 评论
PYA_24 (楼主) 4年前

controller 里 view('模板', $data) 返回的数组里没有 member 这个key,可以用 isset(),或者empty() 先判断变量是否存在

4年前 评论
PYA_24 (楼主) 4年前

已经很明显了,你的控制器里有分支条件:if(!$data['item]),这里很关键。你以为你的代码会向下执行到最后view('shop/detail'),但实际是提前进入了view('shop/page404')。在shop/page404页面里,有公共的 header.blade.php 模板。再回头看你的控制器,在进入分支流程时,没有给$data赋值member键名,导致shop/page404中的公共模板报错。

4年前 评论
PYA_24 (楼主) 4年前
leo

哎,运算符顺序……

($member ?? '') == null

PS: ''最好还是改成 null

($member ?? null) == null
4年前 评论
PYA_24 (楼主) 4年前
LiamHao 4年前
LiamHao 4年前
PYA_24 (楼主) 4年前
leo (作者) 4年前
PYA_24 (楼主) 4年前
LiamHao 4年前
PYA_24 (楼主) 4年前
LiamHao 4年前
PYA_24 (楼主) 4年前
LiamHao 4年前
PYA_24 (楼主) 4年前

自己解决了,逻辑错了,不是语法问题,在进入前台的时候分离后的公共文件已经在判断$member了,所有在登录就直接给模板赋值,而不是在付款页面

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!