默认情况下laravel-admin菜单链接在当前页跳转,需通过配置控制新窗口打开:方法一在admin_menu表添加target字段并填入_blank;方法二自定义菜单模型重写render逻辑;方法三在静态数组菜单中直接添加target键。推荐方法一,简单可靠且兼容权限与可视化管理。

默认情况下,laravel-admin 的菜单链接都在当前页面跳转。如需让某个菜单项在新窗口(_blank)打开,不能靠前端 JS 或 HTML 属性硬改,而要通过菜单数据模型或配置层控制,确保权限、路由与渲染逻辑一致。
方法一:在数据库菜单表中设置 target 字段
laravel-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 方法
若需更灵活控制(如按权限、环境动态决定是否新窗口),可继承默认菜单模型,覆盖其链接渲染逻辑。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 新建模型
app/Admin/Models/Menu.php,继承原类:class Menu extends \Encore\Admin\Auth\Database\Menu {} - 在
config/admin.php中指定使用该模型:'menu_model' => App\Admin\Models\Menu::class, - 重写
getHrefAttribute()或修改视图中菜单生成逻辑(推荐在resources/views/admin/menu.blade.php中调整,前提是已按规范重写视图) - 例如在 blade 模板中,将原
改为:target) target="{{ $item->target }}" @endif>
方法三:通过菜单配置数组直接定义(适用于静态菜单)
若你未使用数据库菜单,而是用 PHP 数组方式配置菜单(如在 app/Admin/bootstrap.php 中返回菜单结构),可直接为菜单项添加 target 键:
- 示例配置:
'文档中心' => [<br> 'route' => 'admin.docs.index',<br> 'icon' => 'fa-book',<br> 'target' => '_blank'<br>]
- 然后在自定义菜单渲染逻辑中读取并输出该属性(需配合重写视图或扩展菜单服务)
- 注意:官方默认渲染不识别
target,必须自行增强模板或中间件逻辑
实际项目中推荐方法一,简单可靠,兼容权限控制和后台可视化管理,无需改动核心代码或视图文件。










