我一直在尝试使用新的 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 的概念做了一些非常愚蠢的事情,但是我怎样才能将它用作实际的图像参考 - 或者我不能单独使用它吗?