laravel 默认视图解析器仅支持 .blade.php 和 .php 后缀,需在 appserviceprovider 的 boot() 中按环境动态注册 dev.blade.php 或 prod.blade.php 后缀,避免多后缀冲突,并清除配置缓存生效。

需要在开发、测试、生产环境分别使用不同后缀的 Blade 视图模板(如 .blade.php、.dev.blade.php、.prod.blade.php),且不改动业务代码中 view() 调用方式。
确认视图解析器是否支持多后缀
默认 Laravel 的 ViewFinder 仅注册 .blade.php 和 .php 后缀,其他后缀需手动追加。直接调用 view('welcome') 时,框架会按顺序尝试所有已注册后缀匹配文件,因此必须先扩展后缀列表。
打开 app/Providers/AppServiceProvider.php,在 boot() 方法中添加:
$this->app['view.finder']->addExtension('dev.blade.php');
$this->app['view.finder']->addExtension('prod.blade.php');
按环境动态注册对应后缀
不同环境只应启用其专属后缀,避免开发环境误加载 .prod.blade.php 文件引发逻辑错乱。
方法一:在 AppServiceProvider 中判断 APP_ENV
① 在 boot() 方法开头获取当前环境:$env = $this->app->environment();
② 根据环境值注册唯一后缀:
若 $env === 'local' → $this->app['view.finder']->addExtension('dev.blade.php');
若 $env === 'production' → $this->app['view.finder']->addExtension('prod.blade.php');
其余环境(如 staging、testing)默认回退到 .blade.php,不额外注册。
【注意】不要同时注册多个后缀,否则视图查找顺序不可控,可能加载错误版本
准备对应环境的视图文件
在 resources/views/ 目录下,为同一视图创建不同后缀文件:
welcome.blade.php(通用兜底,保留原始后缀)
welcome.dev.blade.php(仅 local 环境生效)
welcome.prod.blade.php(仅 production 环境生效)
视图引擎会按注册顺序查找:先找 welcome.dev.blade.php(local 环境),找不到则 fallback 到 welcome.blade.php;production 环境同理。
清除配置缓存使更改生效
运行 php artisan config:clear。
这一步不可跳过,因为视图后缀注册发生在服务提供者启动阶段,而配置缓存会冻结该阶段行为。











