必须使用 .blade.php 后缀,因 blade 编译器仅扫描该后缀文件,否则视图无法识别、指令不解析、调用报错且无提示;命名须规范,子目录用点分隔;多后缀需自定义 view finder 并清缓存。

修改 Laravel 视图模板后缀不是功能开关,而是框架底层解析机制的硬性约束,改后缀会导致 view() 调用直接失败或 Blade 指令完全不生效,必须按规范操作才能让模板被正确识别和编译。
为什么不能随意改.blade.php后缀
Blade 编译器在启动时只扫描 resources/views/ 目录下以 .blade.php 结尾的文件,其他后缀(如 .php、.html、.twig)会被跳过。Laravel 不会尝试解析 login.php 中的 @if 或 {{ $user }},这些指令原样输出为纯文本。
视图名映射依赖后缀:resources/views/admin/dashboard.blade.php → 视图名是 admin.dashboard;若存为 dashboard.php,则 view('admin.dashboard') 报错 View [admin.dashboard] not found。
【后缀错误将导致整个视图层失效,且无任何警告提示,仅返回空白页或原始 Blade 代码】
当前唯一合法的后缀方案
必须使用 .blade.php 作为后缀,且文件严格置于 resources/views/ 下。
命名禁止含空格或中文:user list.blade.php → 解析失败;应改为 user_list.blade.php。
子目录结构用点号分隔:resources/views/mail/welcome.blade.php → 视图名 mail.welcome,不可写作 mail/welcome。
未来可能的扩展方向(非官方承诺)
社区已有非侵入式提案:通过自定义 View Finder 实现多后缀支持,但需手动注册服务提供者并重写 Illuminate\View\FileViewFinder 类。
方法一:在 app/Providers/AppServiceProvider.php 的 boot() 中绑定自定义 finder:
$this->app->extend('view.finder', function ($finder, $app) { return new CustomViewFinder($app['files'], $app['config']['view.paths']); });
方法二:利用 Laravel 10+ 的组件自动发现机制,在 resources/views/components/ 下放置 .blade.php 文件,再通过
注意:所有此类改造均需清除 view 缓存(php artisan view:clear),否则旧缓存仍按 .blade.php 匹配,新后缀文件不会被加载。











