菜单不显示需先执行php artisan config:clear,因菜单配置(config/admin.php)被缓存后不会重新读取;升级laravel 13后须按config:clear→route:clear→view:clear顺序清理,漏掉config:clear将导致菜单注册逻辑未加载。

菜单不显示,先看 config:clear 有没有漏掉
菜单配置(config/admin.php)被缓存后,哪怕你改了 'menu' => [] 或新增了路由,Laravel 也不会重新读取——它直接用 bootstrap/cache/config.php 里的旧快照。所以改完菜单结构却没反应,八成是缓存没清干净。
执行这行命令才是关键:php artisan config:clear。注意不是 cache:clear,后者只清应用级缓存,对配置无效。
- 如果刚升级过 Laravel(比如升到 13),必须按顺序执行:
config:clear→route:clear→view:clear,跳过config:clear会导致菜单注册逻辑根本没加载 - 确认
config/admin.php中的'menu' => []数组非空,且每个菜单项包含'title'和'url'(或'children') - 检查是否误删了
app/Providers/AdminServiceProvider.php或没在config/app.php的providers数组里注册它——菜单注册依赖这个服务提供者启动
laravel-admin 菜单依赖路由注册,route:clear 后要重装吗?
不需要重装,但必须确保 routes/admin.php 文件存在且内容有效。laravel-admin 的菜单项最终映射到路由名(admin.users.index 这类),而这些路由由 routes/admin.php 定义并被 AdminServiceProvider 加载。
- 运行
php artisan route:list --name=admin,看输出里有没有你的菜单对应路由;如果没有,说明routes/admin.php没被加载,检查AdminServiceProvider::boot()中是否调用了Route::group - 如果手动修改过
config/admin.php的'route.prefix',记得同步更新routes/admin.php里的prefix参数,否则路由匹配失败,菜单链接会 404 - 别用
php artisan route:cache,laravel-admin 的路由含闭包和动态绑定,缓存后大概率报错退出
菜单图标显示为空方块?不是菜单本身的问题
菜单文字能出来但图标是方块或问号,问题不在 PHP 配置,而在前端资源链路断了——字体文件没加载、MIME 类型不对、或类名版本错配。
- 检查
public/vendor/admin/fonts/下是否存在fontawesome-webfont.woff2等文件;若缺失,补跑:php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider" --force - Nginx 必须显式声明字体 MIME 类型,否则返回
text/plain,浏览器拒绝加载;在 server 块加 location 规则,并重启:sudo nginx -s reload - 确认菜单配置中写的 icon 是 FA4 风格(如
'icon' => 'fa-users'),而不是 FA5('fas fa-users');laravel-admin v1.x 默认不认后者
清除缓存后菜单仍不显示,查这几个真实路径
别只盯着命令行输出,直接验证文件是否真被生成、是否可被 Web 服务器访问:
- 打开浏览器开发者工具 Network 标签,刷新页面,过滤
admin.js和admin.css,看它们状态码是不是 200;如果是 404,说明public/vendor/admin/目录不存在或权限不对 - 访问
http://localhost:8000/vendor/admin/css/admin.css,手动测试 CSS 是否可读;如果 404,回到php artisan vendor:publish步骤,加--force强制覆盖 - 检查
storage/logs/laravel.log,搜索menu或AdminServiceProvider,常有未捕获的异常导致菜单注册中途退出
vendor/admin/css/admin.css,比反复清缓存更省时间。











