OroPlatform如何正确重写datetimepicker JS组件的getDefaultTime方法
OroPlatform datetimepicker getDefaultTime 方法覆盖方案
该方案为Oro官方推荐的JS组件扩展实现,不会修改核心源代码,可避免版本升级覆盖自定义逻辑
- 步骤1:配置JS模块重写映射
你可以选择主题级或项目全局级两种配置方式:- 主题级(仅对应主题生效):在自定义主题的
assets/js/jsmodules.yml中添加配置 - 全局级(所有主题生效):在项目根目录的
config/jsmodules.yml中添加配置
配置内容如下:
将配置里的config: map: '*': oroui/js/app/views/datepicker/datetimepicker-view-mixin: 'custom/js/app/views/datepicker/custom-datetimepicker-view-mixin'custom/js/前缀替换为你自定义JS文件存放的实际路径即可。 - 主题级(仅对应主题生效):在自定义主题的
- 步骤2:创建自定义mixin文件
在对应路径下新建custom-datetimepicker-view-mixin.js,内容如下:// 引入原生mixin import baseDatetimepickerMixin from 'oroui/js/app/views/datepicker/datetimepicker-view-mixin'; import _ from 'underscore'; // 继承原生mixin,仅重写需要修改的getDefaultTime方法 const customDatetimepickerMixin = _.extend({}, baseDatetimepickerMixin, { getDefaultTime: function() { const currentTime = new Date(); // 重置分钟、秒、毫秒为0,实现点击Today返回整点的效果 currentTime.setMinutes(0, 0, 0); return currentTime; } }); export default customDatetimepickerMixin; - 步骤3:构建资源使其生效
执行资源构建命令:symfony console oro:assets:build
开发环境可添加--symlink参数,后续修改JS文件无需重复构建。 - 步骤4:清理缓存验证效果
执行symfony console cache:clear清理缓存,刷新表单页面点击Today按钮即可验证时间已改为整点。
内容的提问来源于stack exchange,提问作者Louis Bertin
相关产品推荐
相关产品推荐

