Laravel 10中@yield、@extends、@section无法生效问题求助
Laravel Blade @yield无法加载@section内容的排查方案
1. 确认路由指向正确视图
确保你的路由文件(routes/web.php)中,对应路由返回的是目标子视图而非主模板:
Route::get('/', function () { return view('main.home.index'); });
如果路由错误指向主模板(main.main-master),自然不会渲染@section内容。
2. 核对子视图文件路径与命名
逐一检查@include的所有子视图是否存在且路径完全匹配:
- 确认
resources/views/main/home/hero-sec.blade.php、resources/views/main/home/featured-category.blade.php等文件都存在 - 检查文件名、目录名的拼写、大小写是否一致,任何笔误都会导致子视图加载失败,最终
@section内容为空
3. 清除Blade视图缓存
Laravel会编译缓存Blade模板,旧缓存可能导致修改不生效,运行以下命令清除缓存:
php artisan view:clear
4. 检查指令拼写与语法
- 确认主模板中的
@yield('main-master-content')无拼写错误(比如误写为@yeld) - 确认子视图的
@extends('main.main-master')路径正确,主模板路径为resources/views/main/main-master.blade.php,该写法符合Laravel视图命名规范 - 确认
@section与@endsection成对出现,无语法中断
5. 排查公共模板的语法问题
检查common.start、common.header等被主模板引入的公共文件是否存在未闭合的HTML标签、PHP语法错误,这类问题可能中断整个模板渲染流程,导致@yield内容无法显示。
内容的提问来源于stack exchange,提问作者Vansh Gora
相关产品推荐
相关产品推荐

