为视频扩展 SilverStripe 文件 class
Extending the SilverStripe File class for Video
我正在尝试扩展 File
/Image
class 以将 .mp4
文件识别为 Video
class 而不是 File
class.
我的代码是:
VideoExtension.php
class VideoExtension extends DataExtension
{
private static $db = array(
'IsAnimation' => 'Boolean',
'AssociatedStaticPage' => 'Text',
'BarCode' => 'Text'
);
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldToTab('Root.Main', TextField::create('BarCode', 'Bar Code'));
$fields->addFieldToTab('Root.Main', TextField::create('AssociatedStaticPage', 'URL'));
}
}
mysite/_config/config.yml
Name: mysite
After:
- 'framework/*'
- 'cms/*'
---
# YAML configuration for SilverStripe
# See http://doc.silverstripe.org/framework/en/topics/configuration
# Caution: Indentation through two spaces, not tabs
SSViewer:
theme: 'simple'
File:
extensions:
- VideoExtension
有了这个我得到一个错误。如果我在 config.yml
中将文件更改为图像,它就可以工作。我想要这个,这样我就可以在管理部分添加自定义字段。
感谢任何帮助。
我相信您想创建一个扩展 File
的 class,而不是创建 DataExtension
。类似于以下内容:
class Video extends File {
private static $allowed_extensions = array(
'mpeg', 'mpg', 'mp4', 'm1v', 'mp2', 'mpa', 'mpe', 'ifo',
'vob','avi', 'wmv', 'asf', 'm2v', 'qt', 'ogv', 'webm'
);
private static $db = array(
'IsAnimation' => 'Boolean',
'AssociatedStaticPage' => 'Text',
'BarCode' => 'Text'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', TextField::create('BarCode', 'Bar Code'));
$fields->addFieldToTab('Root.Main', TextField::create('AssociatedStaticPage', 'URL'));
return $fields;
}
}
然后我们需要通过设置 File
class_for_file_extension
来设置此 class 以用于这些文件扩展名。我们可以在 mysite/_config/config.yml
文件中做到这一点:
File:
class_for_file_extension:
'mpeg': 'Video'
'mpg': 'Video'
'mp4': 'Video'
'm1v': 'Video'
'mp2': 'Video'
'mpa': 'Video'
'mpe': 'Video'
'ifo': 'Video'
'vob': 'Video'
'avi': 'Video'
'wmv': 'Video'
'asf': 'Video'
'm2v': 'Video'
'qt': 'Video'
'ogv': 'Video'
'webm': 'Video'
我正在尝试扩展 File
/Image
class 以将 .mp4
文件识别为 Video
class 而不是 File
class.
我的代码是:
VideoExtension.php
class VideoExtension extends DataExtension
{
private static $db = array(
'IsAnimation' => 'Boolean',
'AssociatedStaticPage' => 'Text',
'BarCode' => 'Text'
);
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldToTab('Root.Main', TextField::create('BarCode', 'Bar Code'));
$fields->addFieldToTab('Root.Main', TextField::create('AssociatedStaticPage', 'URL'));
}
}
mysite/_config/config.yml
Name: mysite
After:
- 'framework/*'
- 'cms/*'
---
# YAML configuration for SilverStripe
# See http://doc.silverstripe.org/framework/en/topics/configuration
# Caution: Indentation through two spaces, not tabs
SSViewer:
theme: 'simple'
File:
extensions:
- VideoExtension
有了这个我得到一个错误。如果我在 config.yml
中将文件更改为图像,它就可以工作。我想要这个,这样我就可以在管理部分添加自定义字段。
感谢任何帮助。
我相信您想创建一个扩展 File
的 class,而不是创建 DataExtension
。类似于以下内容:
class Video extends File {
private static $allowed_extensions = array(
'mpeg', 'mpg', 'mp4', 'm1v', 'mp2', 'mpa', 'mpe', 'ifo',
'vob','avi', 'wmv', 'asf', 'm2v', 'qt', 'ogv', 'webm'
);
private static $db = array(
'IsAnimation' => 'Boolean',
'AssociatedStaticPage' => 'Text',
'BarCode' => 'Text'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', TextField::create('BarCode', 'Bar Code'));
$fields->addFieldToTab('Root.Main', TextField::create('AssociatedStaticPage', 'URL'));
return $fields;
}
}
然后我们需要通过设置 File
class_for_file_extension
来设置此 class 以用于这些文件扩展名。我们可以在 mysite/_config/config.yml
文件中做到这一点:
File:
class_for_file_extension:
'mpeg': 'Video'
'mpg': 'Video'
'mp4': 'Video'
'm1v': 'Video'
'mp2': 'Video'
'mpa': 'Video'
'mpe': 'Video'
'ifo': 'Video'
'vob': 'Video'
'avi': 'Video'
'wmv': 'Video'
'asf': 'Video'
'm2v': 'Video'
'qt': 'Video'
'ogv': 'Video'
'webm': 'Video'