You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blade模板中如何在短三元语句内渲染HTML?

解决Blade短三元语句中渲染HTML标签的问题

嘿,我完全懂你遇到的困扰——Blade的{{ }}语法会自动转义HTML内容,所以你写的<span>标签才会原样输出而不是被渲染。要在短三元表达式里实现HTML渲染,其实很简单,只需要把整个三元表达式包裹在Blade的非转义输出语法{!! !!}里就行。

正确的写法

把你原来的代码改成这样:

{!! Auth::user()->settings['font'] == null ? "<span class='fa fa-check'></span>" : '' !!}

这里我把false换成了空字符串'',因为直接输出false在Blade里会显示0,空字符串更符合“什么都不显示”的预期。

为什么这样可行?

Blade的{!! !!}语法的作用就是告诉模板引擎:不要转义这个表达式的输出内容。所以当你的三元条件满足时,<span>标签会被直接渲染成HTML元素;条件不满足时,就输出空内容,页面上不会有多余的字符。

更易读的替代写法

如果觉得短三元的可读性不够好,也可以用Blade的@if指令来实现同样的效果,逻辑更清晰:

@if(is_null(Auth::user()->settings['font']))
    <span class='fa fa-check'></span>
@endif

注意事项

使用{!! !!}的时候要注意XSS安全风险——如果输出的内容包含用户输入的未过滤数据,可能会导致跨站脚本攻击。不过你这里的<span>是固定的静态内容,所以完全不用担心这个问题。

内容的提问来源于stack exchange,提问作者Chud37

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:22:58