问题描述
我正在寻找在 SULU AdminUI 中简单使用 single_media_upload
的示例。
我有一个玩家表单,它有 single_media_selection
类型的字段,而且工作正常。
现在,我如何使用 single_media_upload
,因为当我替换它而不是 single_media_selection
时,它在保存后不以表格形式显示图片(但它保存图像)。
<property name="photo" type="single_media_selection" colspan="4" >
<Meta>
<title>playerinfo.playerimage</title>
</Meta>
<params>
<param name="types" value="image"/>
</params>
</property>
我替换为
<property name="photo" type="single_media_upload" colspan="4" spaceAfter="2">
<params>
<param name="upload_text">
<Meta>
<info_text>app.player_info_upload</info_text>
</Meta>
</param>
<param name="skin" value="default"/>
<param name="empty_icon" value="su-user"/>
<param
name="collection_id"
type="expression"
value="service('sulu_media.system_collections.manager').getSystemCollection('sulu_media')"
/>
</params>
</property>
在实体本身中,字段是 MediaInterface
类型。
解决方法
single_media_upload
字段类型不能与 single_media_selection
类型互换。它用于管理内置联系人/帐户实体的头像/徽标,尚未针对其他用例进行优化。目前,single_media_upload
会为选定的媒体实体创建新的媒体版本,而不是在上传文件时创建单独的媒体实体。此行为与 single_media_selection
有很大不同,可能不适合您的用例。这也是 Sulu documentation 中尚未列出 field-type 的原因。
也就是说,您的问题的原因可能是 single_media_upload
字段类型使用的数据格式与 single_media_selection
不同。 通常,Sulu 表单视图的字段类型期望您的 API 以与提交表单时发送到服务器的格式相同的格式返回数据(请参阅中的 Form configuration section Sulu 文档)。您可以通过检查按 network panel development tools of your browser 中的保存按钮时发出的请求来查看发送到服务器的数据。
在 single_media_upload
字段类型的情况下,发送到服务器的数据如下所示:
{
"id": 33,"url": "/media/33/download/photo-1535683939029-0030b4de2382.jpeg?v=1","thumbnails": {
"sulu-400x400": "/uploads/media/sulu-400x400/03/33-photo-1535683939029-0030b4de2382.jpg?v=1-0",...
}
}
如果您想以自定义实体的形式使用字段类型,您需要调整您的控制器(或您的实体的序列化)以匹配此格式。