Blade模板继承必须严格遵循@extends、@section、@yield三件套规则:父模板需含@yield('content')占位符,子视图首行必须是@extends('layouts.app')且无空格,区块名大小写敏感,多处注入应改用@push/@stack。

Blade 模板继承在 Laravel 5.5 中完全可用,但必须严格遵循 @extends + @section + @yield 三件套规则;任何偏离(比如子视图开头有空格、父模板漏 @yield('content'))都会导致白屏且无明确报错。
父模板必须含 @yield('content'),否则子内容彻底消失
这是最常被忽略的硬性前提。Laravel 5.5 不会校验父模板是否定义了占位符,它只默默丢弃所有 @section 内容。
-
resources/views/layouts/app.blade.php至少得有一行:@yield('content')—— 这是子视图内容唯一的落点 - 可额外加:
@yield('title', '默认标题')、@yield('scripts'),但'content'是强制项 - 别用
@include替代@yield:例如在父模板里写@include('pages.home'),这属于拼接,不是继承,@section将失效 - 静态 HTML 和带默认值的
@section('sidebar') 默认侧边栏 @endsection可共存,但只有@yield能被子视图替换
子视图第一行必须是 @extends('layouts.app'),前面不能有任何字符
Laravel 5.5 对子视图开头极其敏感。哪怕一个空格、换行或 BOM 字节,都会中断解析,结果通常是空白页或 Unexpected token " 错误。
-
@extends('layouts.app')必须是文件第一行,且不能缩进、不能前置注释、不能有 PHP 标签 - 路径用点号分隔,不写
.blade.php后缀;layouts.app对应resources/views/layouts/app.blade.php - Linux 环境下路径区分大小写:
@extends('Layouts.app')和@extends('layouts.app')是两个不同视图 - 子视图中裸写的 HTML(如直接写
<h1>Hello</h1>)会被忽略——所有动态内容必须包在@section('content')@endsection里
多处注入 JS/CSS 请用 @push/@stack,别重复 @section
@section('scripts') 在多个子视图中重复定义时,只有最后一个生效——这是 Laravel 5.5 的设计行为,不是 bug。
立即学习“前端免费学习笔记(深入)”;
- 需要按需加载脚本?在子视图中写:
@push('scripts')<script src="/js/chart.js"></script>@endpush - 在父模板


















