如何在Contao 4小部件中支持德语日期格式?
Contao 4 日期小部件兼容德语格式(d.m.Y)的内置解决方案
问题描述
我正在使用Contao 4,我的小部件在eval子数组中有如下配置:
'eval' => array( 'class' => 'valid_date', 'rgxp' => 'date', 'dateformat' => 'd.m.Y', 'datepicker' => TRUE, 'tl_class' => 'w50 wizard', 'maxlength' => 255, 'mandatory' => TRUE ),
默认的date验证要求格式为YYYY-MM-DD,但我需要兼容德语日期格式(d.m.Y)。我已尝试添加datepickerFormat配置:
'dateformat' => 'd.m.Y', 'datepickerFormat' => 'd.m.Y',
同时有以下疑问:
- 是否有内置解决方案或无需创建自定义过滤模块的替代方法?
- 当前区域设置是否存在问题?Contao是否会检测当前区域设置?(注:前端已显示为德语,错误信息也是德语)
内置解决方案
1. 替换验证规则
将eval数组中的rgxp值从date改为datim,datim规则会根据你配置的dateformat来验证输入格式,无需自定义模块:
'eval' => array( 'class' => 'valid_date', 'rgxp' => 'datim', // 关键修改:替换为datim 'dateformat' => 'd.m.Y', 'datepicker' => TRUE, 'tl_class' => 'w50 wizard', 'maxlength' => 255, 'mandatory' => TRUE ),
原因:date类型验证规则硬绑定了YYYY-MM-DD格式,不受dateformat配置影响;而datim规则会读取dateformat的值来匹配输入格式,刚好适配德语日期格式需求。
2. 区域设置说明
Contao会检测当前区域设置,你的前端显示和错误信息为德语,说明区域设置已经正常生效。问题并非出在区域设置上,而是date验证规则本身的局限性导致的,替换为datim即可解决格式兼容问题。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

