You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 01:36:04