所有的东西都能在后台正确上传,我可以从服务器上得到一个JSON响应,
{“success”:true,“filename”:“image1.png”,“assetId”:946}
但在使用>docs时,它不使用assetId填充隐藏字段
onload:(response)=>response.assetid
如果我删除onload,那么默认功能返回纯文本,然后我隐藏的输入将在值中显示整个JSON响应,如下所示
另外,在成功上传后,是否也要更改隐藏的输入名称?CMS需要保存/链接到的字段?恼人的是,我需要一个名称让Craft controller做上传到系统,另一个名称保存到条目中正确的字段。
FilePond.Parse(Document.Body);
FilePond.setOptions({
allowDrop: true,
allowReplace: true,
instantUpload: true,
server: {
url: 'https://example.com/',
process: {
url: './actions/assets/upload',
ondata: (formData) => {
formData.append('folderId', '8');
return formData;
},
onload: (response) => response.assetId,
}
}
});
我自己想出来的--我会离开这里,以防对其他人有帮助。
FilePond.parse(document.body);
FilePond.setOptions({
allowDrop: true,
allowReplace: true,
instantUpload: true,
server: {
url: 'https://example.com/',
process: {
url: './actions/assets/upload',
ondata: (formData) => {
formData.append('folderId', '8');
formData.append('fieldId', '18');
formData.append('elementId', '1');
return formData;
},
onload: (response) => {
var json = (response);
var obj = JSON.parse(json);
var id = obj.assetId;
var input = document.createElement("input");
input.type = "hidden";
input.name = "fields[cover][]";
input.value = id;
document.getElementById("entry-form").appendChild(input);
},
}
}
});