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

Laravel Blade中用{!! !!}渲染iframe时foreach循环中断求助

问题分析与解决方案

看起来你遇到的问题大概率不是Blade循环本身的bug,而是浏览器解析HTML时的结构错误导致视觉上“循环中断”,结合你提供的iframe代码示例,我整理了几个排查和解决方向:

1. 检查iframe标签是否完整闭合

你给出的iframe代码示例是:

<iframe id="ytplayer" type="text/html" width="720" height="405" src="https://www.youtube.com/embed/M7lc1UVf-VE" frameborder="0" allowfullscreen>

注意:HTML规范里<iframe>不是自闭合标签,必须以</iframe>结尾。如果数据库中存储的iframe代码缺少闭合标签,浏览器会把后续所有循环内容(包括下一个<div>、<h1>等)都当作第一个iframe的内部内容,导致这些内容被隐藏,看起来就像循环只执行了第一条。

修复方法:
确保数据库中每条记录的iframe代码都完整闭合,比如:

<iframe id="ytplayer" type="text/html" width="720" height="405" src="https://www.youtube.com/embed/M7lc1UVf-VE" frameborder="0" allowfullscreen></iframe>

2. 验证存储的HTML代码合法性

如果iframe代码里存在未转义的特殊字符(比如引号不匹配、嵌套错误的标签),也会破坏整个页面的DOM结构,导致后续内容无法正常渲染。

排查方法:
打开浏览器的开发者工具(F12),切换到「Elements」面板,查看页面的DOM结构:

  • 确认第一条记录的iframe是否正确闭合
  • 检查后续循环的元素是否存在(可能被嵌套到错误的位置)

3. 确保Blade输出正确的原生HTML

如果数据库中存储的iframe代码是经过HTML转义的(比如带有&lt;、&gt;等实体字符),直接用{!! !!}输出会显示原始字符而非渲染成iframe。这种情况下需要先解码:

@foreach ($data as $sermon)
    <div>
        <h1>{{ $sermon->title}}</h1>
        {!! htmlspecialchars_decode($sermon->iframe_code) !!}
        <!-- 其他内容 -->
    </div>
@endforeach

4. 排查Blade模板的语法错误

虽然你提到无报错,但可以检查模板中是否存在未闭合的标签或者语法错误(比如遗漏@endforeach、引号不匹配等),这些问题也可能导致模板渲染异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:38