1

我一直在尝试使用新的 DBFile 数据类型,就像在这个(修剪过的)示例中一样

class SlideImage extends DataObject
{
  private static $table_name = 'SlideImage';
  private static $plural_name = 'Slide Images';
  private static $singular_name = 'Slide Image';

  private static $db = array(
        'Name' => 'Varchar(255)',
         'TestImageField' => "DBFile('image/supported')"
  );
  private static $has_one = array(
        'Image' => Image::class,
 );

图像在函数 getCMSFields(){ 中很容易处理

  $imageField = new UploadField('Image', 'Choose Image');
  $imageField->setFolderName('Uploads/promotionalbanners');

和新的 $imageField = Injector::inst()->create(FileHandleField::class, 'Image','Choose Image');

也可以。

但是,尝试在下面的尝试中将其中任何一个与 TestImageField 一起使用会产生错误“无法使用 SilverStripe\Assets\Storage\DBFile 类型的对象作为数组”

  $fields->addFieldToTab('Root.Main', new UploadField('TestImageField', 'Choose Image'));

也许

  $imageFielddb = Injector::inst()->create(FileHandleField::class, 'TestImageField');

  $imageFielddb = $this->TestImageField->scaffoldFormField('TestImageField');

我知道我在 db 定义中围绕 DBFile 的概念做了一些非常愚蠢的事情,但是我怎样才能将它用作实际的图像参考 - 或者我不能单独使用它吗?

4

0 回答 0