Laravel8+Vue3+InertiaJS配置Ziggy后@routes指令不识别问题
Ziggy @routes指令不解析排查方案
- 先确认你的入口视图文件后缀确实是
app.blade.php,只有带.blade.php后缀的文件Laravel才会解析Blade指令,如果你误删了.blade后缀,所有指令都会被当作普通字符串输出。 - 清理所有Laravel缓存,依次执行以下命令:
旧的视图编译缓存、服务缓存都会导致新安装的Ziggy包的Blade指令不生效。php artisan view:clear php artisan optimize:clear composer dump-autoload - 手动注册Ziggy服务提供者:打开
config/app.php,找到providers数组,在末尾添加一行:
虽然Laravel8支持包自动发现,部分环境下自动发现可能失效,手动注册可以解决这个问题。Tightenco\Ziggy\ZiggyServiceProvider::class, - 临时替换指令测试:将
app.blade.php里的@routes直接替换为等效的原生PHP代码:
访问页面查看源码,如果能正常输出路由相关的JS代码,就可以确认是Ziggy的Blade指令注册问题,执行完前面的缓存清理和手动注册步骤后就可以换回<?php echo app('Tightenco\Ziggy\BladeRouteGenerator')->generate(); ?>@routes。 - 额外注意你当前
app.js里的代码bug:你重写的全局$route方法没有加返回值,调用时会返回undefined,需要修改为:app.config.globalProperties.$route = (a, b = {}) => { const token = new URLSearchParams(window.location.search).get('t'); b["t"] = token; return route(a, b); };
内容的提问来源于stack exchange,提问作者bonbon.langes
相关产品推荐
相关产品推荐

