Laravel Blade模板使用??操作符无返回 无法设置变量默认值如何解决
排查结论与修复方案
语法差异原因
Laravel 5.8及以上版本已移除Blade模板内置的or默认值适配逻辑,该关键词会被直接识别为PHP原生逻辑或运算符:
逻辑或运算的返回值为布尔类型,
true转换为字符串输出为1,false输出为空,这是初始写法返回数值1的根本原因。
??无返回的根因
PHP的??为null合并运算符,仅在变量未定义、变量值严格为null两种场景下返回右侧默认值。
如果$name为空字符串''、数值0、布尔值false这类非null的假值,??会直接返回$name本身,所谓的“无任何返回”本质是$name当前值为空类假值。
修复方案
按需选择对应写法即可:
- 完全对齐老版本
or语法逻辑(变量不存在/为任意假值时返回默认值):<p>{{ empty($name) ? 'hello' : $name }}</p> - 仅需要在变量未定义/为null时返回默认值:
检查控制器向视图传参的逻辑,确认是否未传递$name变量、或传递的$name值为null,修正传参逻辑即可。
内容的提问来源于stack exchange,提问作者Kirill Ryzhkov
相关产品推荐
相关产品推荐

