我已扩展CMS设置以上传两个CSS文件。部分SiteConfig
扩展代码 -
<?php
//OTHER CODES HERE
$fields->addFieldToTab('Root.Main', $cssfile = UploadField::create(
'StyleSheet',
'Style Sheet'
));
$fields->addFieldToTab('Root.Main', $clientcssfile = UploadField::create(
'ClientStyleSheet',
'Client Style Sheet'
));
//OTHER CODES HERE
?>
我扩展了File
类
class FileRenameExtension extends DataExtension {
function onAfterUpload() {
$file = $this->owner;
$file->Name = 'CustomStyle.'.$file->getExtension();
$file->write();
}
}
问题
ClientStyleSheet
上传的文件。Overwrite
,则会覆盖文件并重命名文件。我只是想要无论文件名是什么,它只是保存文件的名称在File Extension Class
答案 0 :(得分:0)
在自定义upload()动作处理程序的情况下,最好直接使用FileField
。
答案 1 :(得分:0)
使用DataExtension,您可以修改File的所有实例,无论它们在何处上传。
一种可能的解决方案:你继承File并挂钩到onAfterUpload:
class CSSFile extends File {
function onAfterUpload() {
$file = $this;
$file->Name = 'CustomStyle.'.$file->getExtension();
$file->write();
parent::onAfterUpload();
}
}
现在你在SiteConfig中使用它,它应该像UploadField一样使用UploadField。
如果我理解正确,您希望允许用户向网站添加样式表。然后,另一种解决方案是允许任何文件名并使用模板中的原始文件名:
<link rel="stylesheet" href="$SiteConfig.StyleSheet.URL">
我更愿意使用第二种解决方案。