我想扩展我使用的模块(UserDefinedForms)的DataObject(EditableDateField)。在那里我想覆盖某个方法(getFormField)。我试图用DataExtension扩展。但它不起作用。
这里的代码......
的config.php :
EditableDateField::add_extension("CustomEditableDateField");
CustomEditableDateField :
class CustomEditableDateField extends DataExtension {
public function getFormField() {
//test is function called
echo 'test';
exit();
}
}
此外,我尝试在配置中使用Object :: useCustomClass将整个EditableDateField替换为我的CustomClass,但也没有成功。
最好的方法是什么?
很多人, 弗洛里安
答案 0 :(得分:1)
要做你想要实现的目标,你不需要扩展EditableDateField
。
您正在寻找的是EditableDateField_FormField
,它扩展了DateField
。 DateField
负责生成HTML并进行验证等。DateField
确实有一个名为default_config
which looks like this:的静态变量
static $default_config = array(
'showcalendar' => false,
'jslocale' => null,
'dmyfields' => false,
'dmyseparator' => ' <span class="separator">/</span> ',
'dmyplaceholders' => true,
'dateformat' => null,
'datavalueformat' => 'yyyy-MM-dd',
'min' => null,
'max' => null,
);
使用Silverstripe中的配置系统,您可以使用以下命令将默认dateformat
更改为dd.MM.yyyy
格式:
EditableDateField_FormField:
default_config:
'dateformat': 'dd.MM.yyyy'
您需要像上面的示例一样使用EditableDateField_FormField
,而不是更改default_config
本身的DateField
,否则您可能会在CMS中遇到问题。
这适用于the constructor of DateField
setting the instance config to the value of the default_config
。
由于dateformat
中的NULL
值通常为default_config
,an if-statement passes会导致dateformat
设置i18n::get_date_format()
的结果。