在Silverstripe 3.3.1中,GridFieldExportButton似乎无法覆盖。在这种情况下,我使用userforms,我需要控制GridFieldExportButton中的函数,如generateExportFileData(),以便改变某些行为,例如使用字段标签作为csv中的字段名称并包括
标签。
我试过直接延伸
class SubmissionExportButton extends GridFieldExportButton
通过_config.php
Object::add_extension('GridFieldExportButton', 'SubmissionExportButton');
class SubmissionExportButton extends Extension{}
和通过注射器。
class SubmissionExportButton extends GridFieldExportButton{}
Injector:
GridFieldExportButton:
class: SubmissionExportButton
我甚至试图完全替换类并扩展UserDefinedForm,但他有一些意想不到的结果。最好只是控制有问题的班级,但正确的程序是什么?
答案 0 :(得分:1)
我会复制https://github.com/axyr/silverstripe-phpexcel内所采用的方法来创建一个新组件并取消注册默认组件并注册它。
答案 1 :(得分:0)
注射器应该非常适合这种情况,所以只需要仔细检查您的过程:
<强>〜/ mysite的/ _config / config.yml 强>
Injector:
GridFieldExportButton:
class: SubmissionExportButton
<强>〜/ mysite的/代码/ SubmissionExportButton.php 强>
class SubmissionExportButton extends GridFieldExportButton
{
public function generateExportFileData($gridField)
{
// override here, retain return types!
}
// etc...
}
,然后强>
运行~/dev/build/?flush
运行~/admin/pages/?flush
我有时会遇到CMS缓存未能以与前端刷新一致的方式清除的问题,但我必须运行它才能在过去进行某些调整。我甚至不得不多次冲洗CMS,但这通常是在我已经到达$utter_frustration_point
或凌晨3点时:P
我还检查silverstripe/silverstripe-userforms
只是为了确保它们还没有覆盖GridFieldExportButton
- 似乎没有,祝你好运,我希望这会有所帮助:)