Laravel 12:Blade布局传递HTML数据显示异常及语法报错求助
问题分析与解决建议
1. 修正@section的赋值逻辑
你当前在@foreach循环内重复定义@section,最终只会保留最后一次循环的赋值结果,这显然不符合预期。
- 如果是渲染单条新闻,直接去掉
@foreach,使用单个数据对象:
@extends('layouts.newslayout') @section('title', $data->title) @section('newsimage', $data->image) @section('newscontent', $data->long)
- 如果是渲染多条新闻,应该在子视图的section内循环输出,而非循环赋值section:
@extends('layouts.newslayout') @section('title', '新闻列表') @section('newscontent') @foreach($data as $item) <p><blockquote>{!! $item->long !!}</blockquote></p> @endforeach @endsection
2. 解决HTML源码展示的问题
Blade默认会转义HTML内容,要输出原始HTML需使用{!! 内容 !!}语法(你之前用的{! !}是错误语法,导致报错)。两种处理方式:
- 在定义section时直接处理:
@section('newscontent', {!! $item->long !!})
- 在布局的
@yield位置处理:
<p><blockquote>{!! @yield('newscontent') !!}</blockquote></p>
⚠️ 注意:直接输出未过滤的HTML存在XSS风险,确保$item->long的内容是可信的,或先做HTML过滤处理。
3. 修复布局页的标签闭合问题
你的布局页代码中<blockquote>标签未闭合,会导致HTML结构错误,修正为:
<p><blockquote>@yield('newscontent')</blockquote></p>
内容的提问来源于stack exchange,提问作者user19100
相关产品推荐
相关产品推荐

