后端CMS【免费下载链接】voyagerVoyager - The Missing Laravel Admin项目地址https://gitcode.com/gh_mirrors/vo/voyager点击查看免费下载导读本文讲解 VoyagerLaravel Admin如何在不复制、不修改master.blade.php主布局的前提下为后台管理界面追加自定义 CSS 与 JavaScript 资源。读完本文你将掌握voyager.php配置文件中additional_css与additional_js两个配置项的正确用法、它们在后端模板中的真实注入位置与加载顺序以及利用该机制覆盖 Voyager 默认样式、扩展后台交互功能的最佳实践。为什么需要附加资源机制在早期版本的 Voyager 中开发者若想给后台加入自定义样式或脚本通常的做法是直接修改或复制覆盖Voyager 的主 Blade 模板。这种做法的隐患在于当 Voyager 发布新版本时这些手工改动会成为升级的地雷——你需要反复对比、手动迁移自己的修改否则升级后改动会丢失甚至与新版模板冲突。从当前版本开始Voyager 提供了官方机制直接通过voyager.php配置文件声明附加的 CSS 与 JS 文件由 Voyager 主布局自动引入无需复制或修改任何 Blade 文件本身从而彻底消除手工迁移的麻烦。这些附加资源会排在 Voyager 自带资源之后加载因此你可以放心地覆盖默认样式与默认功能。配置入口voyager.php中的两个配置项该机制完全由voyager.php配置文件驱动。在已发布到项目config/目录下的配置文件中可以看到如下默认片段源码位置见 publishable/config/voyager.php// Here you can specify additional assets you would like to be included in the master.blade additional_css [ //css/custom.css, ], additional_js [ //js/custom.js, ],additional_css一个字符串数组每一项是一个 CSS 资源的路径additional_js一个字符串数组每一项是一个 JavaScript 资源的路径。两个数组默认均为空。你只需要把注释行取消注释并填入自己的文件路径或追加更多路径即可例如additional_css [ css/custom.css, css/admin-theme.css, ], additional_js [ js/custom.js, js/dashboard-widgets.js, ],路径含义每一项路径都会被传递给 Laravel 的asset()辅助函数处理也就是说路径是相对于应用public/目录的详见后文路径解析规则。数组支持多个文件会按声明顺序依次加载。源码验证附加资源注入到主布局的哪些位置要理解该机制的行为直接看 Voyager 主布局模板 resources/views/master.blade.php 中两处注入点即可。1. 附加 CSS 注入在head尾部在master.blade.php中Voyager 首先加载自己的核心样式app.css第 23 行随后才处理附加 CSS!-- App CSS -- link relstylesheet href{{ voyager_asset(css/app.css) }} yield(css) if(__(voyager::generic.is_rtl) true) ... endif !-- Few Dynamic Styles -- style typetext/css ... /style if(!empty(config(voyager.additional_css)))!-- Additional CSS -- foreach(config(voyager.additional_css) as $css)link relstylesheet typetext/css href{{ asset($css) }}endforeach endif从模板顺序可以确认附加 CSS 在所有 Voyager 自带样式含动态primary_color内联样式之后注入这正是可以覆盖默认样式的底层保证——CSS 层叠规则中后声明的规则优先级更高。2. 附加 JS 注入在/body前在页面底部Voyager 先加载核心脚本app.js并执行通知/消息相关的内联脚本随后注入附加 JSscript typetext/javascript src{{ voyager_asset(js/app.js) }}/script script ... /script include(voyager::media.manager) yield(javascript) stack(javascript) if(!empty(config(voyager.additional_js)))!-- Additional Javascript -- foreach(config(voyager.additional_js) as $js)script typetext/javascript src{{ asset($js) }}/scriptendforeach endif这意味着你的自定义脚本运行时app.js以及其中定义的helpers等全局对象已经就绪可以直接使用 Voyager 暴露的全局功能来扩展后台交互。路径解析规则asset()与voyager_asset()的区别官方文档特别提示附加资源路径会被传递给 Laravel 的asset()函数。这是理解该配置项的关键asset($path)Laravel 全局辅助函数生成相对于应用public/目录的 URL。因此你的自定义文件应放在public/css/custom.css、public/js/custom.js这类位置配置时填写css/custom.css、js/custom.js即可与之相对Voyager 自身资源走的是voyager_asset()辅助函数见 src/Helpers/helpers.php它生成指向VoyagerControllerassets路由的 URL并由该控制器从 Voyager 的publishable/assets/目录读取文件见 src/Http/Controllers/VoyagerController.php。所以不要把附加资源放进 Voyager 的publishable/assets/目录也不要在配置里写voyager_asset路径——附加资源走的是标准的 Laravelasset()通道只需放在你自己的public/目录下。实战一为后台换一套自定义主题附加 CSS 机制最典型的用途就是整体更换 Voyager 后台的视觉风格。由于注入顺序在 Voyager 全部样式之后你完全可以在一个自定义样式表中覆盖 Bootstrap 与 Voyager 的核心变量。例如创建public/css/admin-theme.css覆盖侧边栏配色.voyager .side-menu .navbar-header { background: #2c3e50 !important; border-color: #2c3e50 !important; } .voyager .side-menu .panel-body .list-group-item a, .voyager .side-menu .panel-body .list-group-item .badge { color: #ecf0f1; }然后在config/voyager.php中启用additional_css [ css/admin-theme.css, ],configurations文档见 docs/getting-started/configurations.md也明确指出通过这种方式添加自定义样式表理论上你甚至可以为 Voyager 打造一整套全新主题而无需改动任何 Voyager 自带文件。实战二为后台注入自定义 JavaScript 增强交互additional_js的典型场景是给后台补充全局交互逻辑。例如创建一个public/js/custom.js监听页面加载并增强表格行为document.addEventListener(DOMContentLoaded, function () { // 例如为所有 .table 添加斑马纹以外的自定义效果 document.querySelectorAll(.voyager .table).forEach(function (table) { table.classList.add(table-hover); }); });在config/voyager.php中启用additional_js [ js/custom.js, ],官方配置文档见 docs/getting-started/configurations.md同样确认你可以添加任意数量的 JavaScript 文件它们都会在 Voyager 后台仪表盘中执行。加载顺序与覆盖策略总结综合模板源码页面最终的资源加载顺序为headVoyagerapp.css→yield(css)→ RTL 样式若开启→ 动态内联样式 →附加 CSSbody末尾Voyagerapp.js→ 通知/消息内联脚本 → 媒体管理器 →yield(javascript)与stack(javascript)→附加 JS。据此可以推导出三条实用策略样式覆盖在附加 CSS 中重写 Voyager 选择器即可必要时使用!important应对同优先级冲突功能覆盖附加 JS 在 Voyager 核心脚本之后执行可以直接依赖helpers、toastr等全局对象或替换/扩展既有行为页面级定制优先用区块如果你的需求只针对某个 BREAD 页面应优先使用section(css)/section(javascript)或push(javascript)这类模板区块同样见master.blade.php中的yield/stack声明而不是全局注入全局机制适合后台通用资源。注意事项与常见问题文件必须位于public/目录因为路径最终交给asset()解析找不到文件时页面会报 404请确认路径拼写与文件实际位置一致修改配置后需清缓存若生产环境启用了配置缓存编辑config/voyager.php后应执行php artisan config:clear或重新php artisan config:cache否则改动不生效资源版本号与浏览器缓存升级自定义样式/脚本后浏览器可能仍使用旧缓存可在 URL 后追加查询参数如css/custom.css?v2强制刷新全局注入需谨慎附加 JS 会在后台所有页面执行应避免在文件顶部就访问页面特有元素如 BREAD 表单字段必要时用DOMContentLoaded或按需判断与覆盖文件机制的关系该机制解决的是全局附加资源问题。若你需要覆盖单个 BREAD 的视图模板如browse.blade.php、提交按钮或控制器请参考 自定义文件覆盖指南两者可以组合使用全局资源走配置注入页面级定制走视图覆盖。结语additional_css与additional_js是 Voyager 提供的最轻量、最安全的后台定制入口无需触碰任何 Voyager 核心文件即可实现样式覆盖、主题化与交互增强同时保证未来升级时自定义内容不受影响。配合源码中 resources/views/master.blade.php 的注入点设计与 publishable/config/voyager.php 的配置结构开发者可以在完全理解其加载机制的前提下放心地将这一能力用于生产环境的后台定制。赞分享后端CMS【免费下载链接】voyagerVoyager - The Missing Laravel Admin项目地址https://gitcode.com/gh_mirrors/vo/voyager点击查看免费下载相关推荐深入理解Chaos Blade自定义资源定义Kubernetes CRD扩展故障注入场景完整指南深入理解Chaos Blade自定义资源定义Kubernetes CRD扩展故障注入场景完整指南 Chaos Blade作为一款强大的分布式混沌工程工具通过运维云原生SREAI Agent人工智能Loxodon Framework核心组件详解从ViewModel到View的完整实现Loxodon Framework核心组件详解从ViewModel到View的完整实现 Loxodon Framework是一个强大的MVVM和数据绑定框架游戏开发UI组件前端Docs 如何用 FRONTEND_CSS_URL 与 FRONTEND_JS_URL 在运行时注入自定义 CSS 和 JSDocs 如何用 FRONTEND_CSS_URL 与 FRONTEND_JS_URL 在运行时注入自定义 CSS 和 JS Docs基于 Django 协同办公知识库后端前端即时通讯上一篇LipNet训练全攻略5种场景实战教程轻松掌握模型优化技巧下一篇Lago实施指南从评估到上线的开源计费系统部署步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
中高端衣物护理机选购指南与技术解析 1. 衣物护理机选购核心逻辑拆解当预算锁定在1-2万元区间时,我们面对的是中高端衣物护理机的竞技场。这个价位的产品已经脱离了基础功能堆砌阶段,开始比拼真正的技术含金量和使用体验。作为处理过上百台护理机评测的家电博主,我发现这个价格带… · 2026/9/23 19:27:26
粘土人世纪攻略避坑指南:3个实战项目踩过的雷,新手必看 粘土人世纪攻略避坑指南:3个实战项目踩过的雷,新手必看 官方文档那几万字,谁读完算我输。 刚入手《粘土人世纪》想做个简单的角色养成 实战项目 ,或者给现有模组加个新技能,翻遍Wiki和官方补丁说明,还是两眼一抹黑。… · 2026/9/23 19:27:20
用Numpy手写BP神经网络,搞定回归预测全流程 简介:基于BP神经网络实现数据回归预测,面向需要快速上手神经网络的Python开发者和数据分析初学者,使用numpy完成网络搭建,以Boston房价数据集为示例,演示从Excel数据读取、网络训练到结果可视化的完整流程。压缩包共6个… · 2026/9/23 19:27:20
Kornia 3D 亚像素定位修复:`max_candidates` 从批次共享预算改为逐图像预算 计算机视觉深度学习人工智能图像处理 【免费下载链接】kornia 🐍 空间人工智能的几何计算机视觉库 项目地址: https://gitcode.com/kornia/kornia 点击查看 免费下载 导读
本文解读 Kornia 在 migration-047(对应 #4256、#4350)… · 2026/9/23 19:57:44
八音盒原理避坑指南:新手环境配置不卡壳 八音盒原理避坑指南:新手环境配置不卡壳 配置环境就卡半天,代码报错满天飞,这种绝望感谁懂?别急,这份八音盒原理避坑指南专治各种“水土不服”。很多新手在搭建音频合成项目时,往往卡在依赖库版本冲突或者采样率不匹配上,导致项目跑不起来。… · 2026/9/23 19:57:37
七绝山副本入门到精通:别再瞎刷题,这5个坑让你从0到1 七绝山副本入门到精通:别再瞎刷题,这5个坑让你从0到1 看了一堆教程还是不会写项目?别急着自我怀疑,问题可能出在你根本没搞懂“七绝山副本”背后的逻辑闭环。很多人以为这是某个游戏里的BOSS战,或者某款手游的通关攻略,其实不然。在市政公用工程… · 2026/9/23 19:57:37
做报表用什么软件?图解原理拆解3个避坑方案 做报表用什么软件?图解原理拆解3个避坑方案 盯着屏幕上一堆红色的 StackTrace,脑子瞬间炸了。 NullPointerException 还是 OutOfMemoryError… · 2026/9/23 19:57:31
Qt FTP中文路径乱码解决方案:QFtp编码转换与递归下载删除实战 简介:面向需要在 Qt 工程中集成 FTP 文件夹/文件管理能力的开发者,这份代码包基于 Qt 5.7 封装了指定路径的文件夹下载、文件下载以及文件夹/文件删除操作,并内置中文路径转码逻辑,可兼容目标机不同系统编码下的中文路径ÿ… · 2026/9/23 19:57:31
5 分钟跑通蚁群算法:scikit-opt TSP 实战 5 分钟跑通蚁群算法:scikit-opt TSP 实战 【免费下载链接】scikit-opt Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution an… · 2026/9/23 19:57:31
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29