有人可以指导我看一个示例,该示例如何在将dataObject的字段转储到DB中之前对其进行清理?
我不知道在哪里看。
我想清除一些用户输入,然后再将其保存到SiteConfig中。
您可以自定义的保存行为Page
,DataObject
或SiteConfig
使用onBeforeWrite
函数。
调用write()
将对象保存到数据库时触发该函数。这包括在CMS中保存页面或更改ModelAdmin记录。
这是Silverstripe 3.1的示例,该示例onBeforeWrite
在SiteConfig扩展上使用以去除字符并将字符转换为文本字段中的小写字母:
SiteConfig onBeforeWrite示例
class CustomSiteConfig extends DataExtension {
private static $db = array(
'TwitterUsername' => 'Text'
);
public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab('Root.Main', new TextField('TwitterUsername', 'Twitter Username'));
}
public function onBeforeWrite() {
$this->owner->TwitterUsername = strtolower($this->owner->TwitterUsername);
$this->owner->TwitterUsername = preg_replace("/[^a-z0-9]/", '', $this->owner->TwitterUsername);
parent::onBeforeWrite();
}
}
注意:为了使上面的示例起作用,CustomSiteConfig
需要将扩展名应用于SiteConfig
。这可以通过yml配置文件或_config.php文件完成。
mysite / _config / config.yml
---
Name: site
After: 'framework/*','cms/*'
---
# ...
# SiteConfig Extension
SiteConfig:
extensions:
- CustomSiteConfig
# ...
要么
mysite / _config.php
global $project;
$project = 'mysite';
// ...
SiteConfig::add_extension('CustomSiteConfig');
// ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句