位置:首页 > PHP > Laravel-admin菜单新窗口打开设置方法与修改教程

Laravel-admin菜单新窗口打开设置方法与修改教程

时间:2026-08-15  |  作者:318050  |  阅读:0

lara vel-admin 的菜单链接默认会在当前页面跳转。如果希望改成新窗口打开,需要通过配置处理。

常见做法有三种:

  • admin_menu 表里新增 target 字段,并将其值设为 _blank
  • 自定义菜单模型,重写 render 逻辑
  • 在静态数组菜单里直接补上 target

综合来看,更推荐第一种方案。原因很直接:实现门槛低、稳定性高,而且和权限控制、可视化管理这套机制也能自然兼容。

Lara vel-admin修改菜单打开方式新窗口设置方法

默认情况下,lara vel-admin 的菜单链接都在当前页面跳转。

如需让某个菜单项在新窗口(_blank)打开,不能靠前端 JS 或 HTML 属性硬改,而要通过菜单数据模型或配置层控制,确保权限、路由与渲染逻辑一致。

实现方式概览

  • 方法一:在数据库菜单表中设置 target 字段
  • 方法二:自定义菜单模型,重写 render 方法
  • 方法三:通过菜单配置数组直接定义

方法一:在数据库菜单表中设置 target 字段

lara vel-admin 默认使用 admin_menu 表存储菜单。

该表支持扩展字段,只需添加 target 字段(VARCHAR,允许为空),并在对应菜单行填入 _blank 即可生效。

  • 执行迁移新增字段:
    php artisan make:migration add_target_to_admin_menu_table,在迁移文件中添加:
    $table->string('target')->nullable()->after('uri');
  • 发布迁移:php artisan migrate
  • 进入后台「菜单管理」列表,编辑目标菜单项,在「URI」同级找到新增的「Target」输入框,填入 _blank
  • 刷新页面后,该菜单链接自动带上 target="_blank" 属性

这一方案最适合大多数项目。它改动小,维护成本低,也更容易和现有后台机制保持一致。

方法二:自定义菜单模型,重写 render 方法

如果需要更灵活的控制,比如按权限、环境动态决定是否新窗口打开,可以继承默认菜单模型并覆盖其链接渲染逻辑。

  • 新建模型 app/Admin/Models/Menu.php,继承原类:
    class Menu extends EncoreAdminAuthDatabaseMenu {}
  • config/admin.php 中指定使用该模型:
    'menu_model' => AppAdminModelsMenu::class,
  • 重写 getHrefAttribute() 或修改视图中菜单生成逻辑(推荐在 resources/views/admin/menu.blade.php 中调整,前提是已按规范重写视图)
  • 例如在 blade 模板中,将原 改为:
    target) target="{{ $item->target }}" @endif>

这种方式灵活性更高。但相对来说,改造成本和维护要求也更高。

方法三:通过菜单配置数组直接定义(适用于静态菜单)

如果你未使用数据库菜单,而是用 PHP 数组方式配置菜单,例如在 app/Admin/bootstrap.php 中返回菜单结构,也可以直接为菜单项添加 target 键。

  • 示例配置:
    '文档中心' => [
    'route' => 'admin.docs.index',
    'icon' => 'fa-book',
    'target' => '_blank'
    ]
  • 然后在自定义菜单渲染逻辑中读取并输出该属性(需配合重写视图或扩展菜单服务)
  • 注意:最新默认渲染不识别 target,必须自行增强模板或中间件逻辑

推荐方案

实际项目中推荐方法一。

  • 简单可靠
  • 兼容权限控制
  • 兼容后台可视化管理
  • 无需改动核心代码或视图文件

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多