OroPlatform:如何实现 MultiFileType
Posted
技术标签:
【中文标题】OroPlatform:如何实现 MultiFileType【英文标题】:OroPlatform: how to implement MultiFileType 【发布时间】:2021-10-06 00:25:36 【问题描述】:上下文
我必须在我的一个 OroPlatform 实体上实现多文件上传字段。
我在考虑实现它的步骤与 FileType 完全相同。
所以,我做了以下步骤:
添加文件迁移:public function up(Schema $schema, QueryBag $queries)
$this->attachmentExtension->addFileRelation(
$schema,
'app_sinister',
'files',
[],
15
);
更改表单类型:
->add('files', MultiFileType::class, ['label' => 'app.sinister.fields.files'])
并将其添加到表单中:
form_row(form.files)
它似乎工作,因为属性出现:
问题
当我尝试保存表单时,我收到了这个错误:
我想知道是不是因为我在迁移中实现了addFileRelation
扩展。我试过addAttachmentAssociation
,它在后台创建了这些选项,但我不知道如何将此属性添加到我的formType:
【问题讨论】:
【参考方案1】:在上面的迁移示例中,您已将关系添加到单个文件,但表单类型适用于多个文件。这会导致错误。
要修复它,您可以通过更复杂的迁移添加与多个文件的关系:
$this->extendExtension->addManyToOneRelation(
$schema,
$schema->getTable('oro_attachment_file_item'),
'app_sinisters',
$schema->getTable('app_sinister'),
'id',
[
ExtendOptionsManager::MODE_OPTION => ConfigModel::MODE_READONLY,
'extend' => [
'is_extend' => true,
'owner' => ExtendScope::OWNER_CUSTOM,
'without_default' => true,
'on_delete' => 'CASCADE',
],
'datagrid' => ['is_visible' => false],
'form' => ['is_enabled' => false],
'view' => ['is_displayable' => false],
'merge' => ['display' => false]
]
);
$this->extendExtension->addManyToOneInverseRelation(
$schema,
$schema->getTable('oro_attachment_file_item'),
'app_sinisters',
$schema->getTable('app_sinister'),
'files',
['id'],
['id'],
['id'],
[
ExtendOptionsManager::MODE_OPTION => ConfigModel::MODE_READONLY,
'extend' => [
'is_extend' => true,
'owner' => ExtendScope::OWNER_CUSTOM,
'without_default' => true,
'cascade' => ['persist'],
'on_delete' => 'CASCADE',
'orphanRemoval' => true,
'fetch' => ClassMetadataInfo::FETCH_LAZY
],
'datagrid' => ['is_visible' => false],
'form' => ['is_enabled' => false],
'view' => ['is_displayable' => false],
'merge' => ['display' => false]
]
);
【讨论】:
以上是关于OroPlatform:如何实现 MultiFileType的主要内容,如果未能解决你的问题,请参考以下文章