我一直在尝试使用新的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(){
中很容易处理Image $imageField = new UploadField('Image', 'Choose Image');
$imageField->setFolderName('Uploads/promotionalbanners');
和新的 $ imageField = Injector :: inst() - > create(FileHandleField :: class,' 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');
我知道我在数据库定义中对DBFile的概念做了一些非常愚蠢的事情,但我怎么能将它用作实际的图像引用 - 或者我不能单独使用它?