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

Laravel中通过@yield实现动态Logo显示失败问题求助

解决Laravel动态Logo显示为HTML文本的问题

这个问题我之前也踩过坑!核心原因是Blade模板引擎默认会对通过@section传递的字符串内容进行HTML转义,所以你直接传<img>标签字符串的话,会被当成纯文本输出,而不是渲染成图片。下面给你两种靠谱的解决方案:

方案1:修改母视图输出逻辑,跳过HTML转义

在你的header.blade.php里,把原来的@yield('image')改成用{!! !!}包裹,让Blade跳过对内容的转义处理:

{!! @yield('image') !!}

这样子视图里用@section('image', '<img src="http://localhost/appname/public/front/images/heading.png">')传递的HTML标签就能正常渲染了。这里额外建议把硬编码的路径换成Laravel的asset()函数,适配不同环境更省心:

@section('image', '<img src="' . asset('front/images/heading.png') . '">')

方案2:用闭包形式定义@section(更推荐)

这是Blade的标准写法,能从根源避免转义问题,代码可读性也更强。在子视图里不要直接传字符串参数,而是用闭包来编写内容:

@section('image')
    <img src="{{ asset('front/images/heading.png') }}" alt="页面Logo">
@endsection

母视图里保持普通的@yield('image')即可,Blade会自动解析闭包里的HTML和Blade指令,不需要额外处理转义。

额外小提示

  • 尽量使用asset()生成静态资源URL,它会根据.env文件里的APP_URL自动生成适配环境的路径,不管本地开发还是生产部署都不用手动修改域名或地址。
  • 如果需要给Logo加样式、条件判断等逻辑,闭包形式的@section能更灵活地扩展代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:46