Laravel-admin修改菜单别名API调用读取配置

老瑶酱_4422

老瑶酱_4422

2026-08-17

819人浏览

原创

laravel-admin 菜单别名可通过覆盖菜单生成逻辑动态修改,核心是在 menu::build() 前从配置文件、数据库或缓存(非实时api)注入标题,优先读取本地缓存并回退默认值。

laravel-admin修改菜单别名api调用读取配置

在 Laravel-admin 中,菜单别名(即后台左侧菜单显示的文字)默认从语言包或模型名称推导而来。若需通过 API 动态读取配置来修改菜单别名,核心在于**覆盖菜单生成逻辑**,使其从自定义配置(如数据库、配置文件或远程 API)中获取标题,而非硬编码或语言包。

菜单别名的来源与覆盖时机

Laravel-admin 的菜单由 Encore\Admin\Menu 管理,初始化时会调用 build() 方法遍历注册的菜单项,并通过 $item->title() 获取显示文本。这个 title 默认来自:

  • 路由绑定的控制器方法注释(@admin_title)
  • resources/lang/xx/admin.php 中的翻译键(如 'users' → trans('admin.users'))
  • 手动注册时传入的字符串(Menu::add('用户管理', ...)

要实现“API 调用读取配置”,关键是在菜单构建前或 title 获取时,**拦截并替换原始标题**。

通过配置文件 + 服务提供者预加载

适合配置较稳定、无需实时刷新的场景。将菜单别名统一写在 config/admin_menus.php 中:

// config/admin_menus.php
return [
    'users' => '会员中心',
    'posts' => '内容管理',
    'settings' => '系统设置',
];

然后在 AppServiceProvider 或自定义服务提供者中,于 boot() 阶段重写菜单项的 title:

use Encore\Admin\Menu;

Menu::macro('setTitleFromConfig', function ($key) {
    $titles = config('admin_menus', []);
    return $titles[$key] ?? $this->title();
});

// 注册菜单后调用(例如在 AdminRoutesServiceProvider 中)
Menu::items()->each(function ($item) {
    if ($item->uri && $key = basename($item->uri)) {
        $item->title(config("admin_menus.{$key}", $item->title()));
    }
});

通过数据库配置 + 中间件动态注入

若别名需后台可编辑,建议建表 admin_menu_titles(字段:menu_key, title_zh, title_en, enabled)。然后创建一个基础菜单构建器:

Laravel
Laravel

避免常见的Laravel错误:N+1查询、批量赋值、缓存陷阱及队列序列化陷阱。

下载
// app/Admin/Extensions/ConfigurableMenuBuilder.php
namespace App\Admin\Extensions;

use Encore\Admin\Menu;
use Illuminate\Support\Facades\Cache;

class ConfigurableMenuBuilder
{
    public static function apply()
    {
        $cacheKey = 'admin_menu_titles';
        $titles = Cache::remember($cacheKey, 3600, function () {
            return \DB::table('admin_menu_titles')
                ->where('enabled', 1)
                ->pluck('title_zh', 'menu_key')
                ->all();
        });

        Menu::items()->each(function ($item) use ($titles) {
            $key = $item->uri ? basename($item->uri) : $item->id;
            if (isset($titles[$key])) {
                $item->title($titles[$key]);
            }
        });
    }
}

app/Admin/bootstrap.php 末尾调用:

\App\Admin\Extensions\ConfigurableMenuBuilder::apply();

通过远程 API 实时获取(慎用)

不推荐在菜单构建时直接调用外部 API(阻塞请求、影响性能),但可通过异步+缓存实现:

  • 新建命令 php artisan admin:sync-menu-titles 定期拉取 API 并存入本地缓存或数据库
  • 菜单构建仍读取本地缓存(同上一节),避免每次请求都调用 API
  • API 返回示例:{"users":"客户档案","orders":"订单流水"}

调用示例(命令内):

$response = Http::get('https://api.example.com/v1/admin-menu-titles');
if ($response->successful()) {
    Cache::put('admin_menu_titles_api', $response->json(), 7200);
}

菜单构建时优先读此缓存,回退到数据库或默认值。

本质上不是改“API 调用”,而是让菜单标题的来源可配置、可扩展。重点在于理解 Laravel-admin 的菜单生命周期,把数据注入点选在 Menu::build() 之前即可。不复杂但容易忽略缓存和性能边界。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

8984

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5461

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

1995

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3388

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4054

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3171

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4497

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3502

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11562

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 178人学习

Composer手册
Composer手册

共0课时 | 0人学习