【问题标题】:Unable to upload files in SilverStripe 4无法在 SilverStripe 4 中上传文件
【发布时间】:2017-05-16 15:47:28
【问题描述】:

我为SiteConfig 创建了一个简单的扩展,以将徽标上传字段添加到设置部分。但是,服务器在上传文件时返回错误。

SiteConfig.php

namespace mymodule\siteconfig;

use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\AssetAdmin\Forms\UploadField;

class SiteConfig extends DataExtension {

    private static $has_one = array(
        'Logo' => 'SilverStripe\\Assets\\File'
    );

    public function updateCMSFields(FieldList $fields) {

        $fields->addFieldToTab('Root.Main', $logo = UploadField::create('Logo', 'Logo upload'));

    }

}

服务器的错误日志没有显示与此错误相关的任何内容。这是怎么回事?

更新

我刚刚尝试将文件上传到 CMS 中的“文件”部分,得到了完全相同的错误。

【问题讨论】:

  • 我认为您可能需要将 $has_one 数组设置更改为:'Logo' => 'Image'
  • 'Logo' => 'Image' 不起作用,因为全局类在 ss4 中消失了。首选 'Logo' => File::class 或 'Image' => Image::class 将 FQCN 硬编码为字符串。至于错误,它不太可能与您的代码有关。 503 很可能是您的环境问题。

标签: php silverstripe silverstripe-4


【解决方案1】:
private static $has_one = [
    'LogoImage' => Image::class,
];

public function updateCMSFields(FieldList $fields) {

   $fields->addFieldToTab('Root.Main', UploadField::create('LogoImage', 'Logo'));

}

【讨论】:

  • 通常最好解释一个解决方案,而不是仅仅发布一些匿名代码行。你可以阅读How do I write a good answer,也可以阅读Explaining entirely code-based answers
  • 您只需将上述代码替换到您的解决方案中即可。您已经显示了问题的屏幕截图,因此在您的解决方案中使用此代码并不是什么大问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2018-09-29
  • 2013-08-11
相关资源
最近更新 更多