如何在继承Laravel-Backpack布局的自定义视图中激活导航菜单项?
解决Posts导航菜单项添加active类的方法
针对你重写create()方法跳转到自定义视图后,无法自动给Posts导航菜单项添加active类的问题,有几种实用方案:
方案一:在自定义视图中手动标记菜单项为活跃状态
在你的自定义Blade视图里,继承布局后、定义content区块前,添加一段PHP代码手动设置对应菜单项的活跃状态:
@extends(backpack_view('blank')) @php // 将名称为'posts'的菜单项设为活跃状态,需和你菜单配置里的item name一致 backpack_menu()->setActiveItem('posts'); @endphp @section('content') // 你的自定义内容 @endsection
方案二:在路由定义中绑定菜单标识
如果你的posts.create路由是自定义注册的,可以在路由定义时通过with()方法关联对应的菜单标识,让Backpack自动识别并添加active类:
// 假设自定义create方法改名为customCreate Route::get('posts/create', [PostCrudController::class, 'customCreate']) ->name('posts.create') ->with('backpack_menu', 'posts');
注意:这里的'posts'要和你菜单配置中对应项的name字段完全匹配。
方案三:通过路由匹配手动添加类(不推荐,硬编码维护性差)
如果你需要自己渲染菜单,可以通过路由匹配判断,给对应菜单项手动添加active类:
@foreach(backpack_menu()->items as $item) <li class="nav-item {{ request()->routeIs('posts.*') || request()->routeIs('posts.create') ? 'active' : '' }}"> <a href="{{ $item->url }}" class="nav-link">{{ $item->name }}</a> </li> @endforeach
内容的提问来源于stack exchange,提问作者karl
相关产品推荐
相关产品推荐

