【问题标题】:Extending the SilverStripe File class for Video为视频扩展 SilverStripe 文件类
【发布时间】:2017-03-13 07:53:27
【问题描述】:

我正在尝试扩展File/Image 类以将.mp4 文件识别为Video 类而不是File 类。

我的代码是:

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 中将文件更改为图像,它可以工作。我想要这个,所以我可以在管理部分添加自定义字段。

感谢任何帮助。

【问题讨论】:

  • 能否在问题中包含代码的相关部分?并且:你得到什么错误?
  • 感谢@3dgoo 清理我的帖子,您可以看到我在发帖时不知道自己在做什么。
  • 乐于助人。我们都从某个地方开始。

标签: silverstripe


【解决方案1】:

我相信您想创建一个扩展 File 的类,而不是创建一个 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 来设置此类以用于这些文件扩展名。我们可以在我们的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 并不会削减它……您还必须通过资产管理正确地将 Video 类分配给上传。
  • 谢谢@bummzack,你是对的。我添加了需要设置的class_for_file_extension 以将Video 类分配给正确的文件扩展名。感谢您接受。
  • 感谢您的回答
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2020-06-27
  • 2011-07-15
相关资源
最近更新 更多