Xadmin外键情况下主页面添加失败bug修复 2022年4月2日 1311 代码厨子 xadmin很久就不维护了,出现了很多bug,我们在使用过程中一直在修复。今天遇到一个在外键情况下,如果主模型添加数据时候添加其关联数据时候,文件上传失败问题。 因为项目中使用附件模型,文章等都关联到这个模型上,作为图片库,所以就经常遇到在后台上传文章时顺便上传图片,发现xadmin有一个bug,如上图: 经过追踪,发现是xadmin里的js发送ajax时候,有一个bug,如果字段为文件类型,则不会上传,修改方法如下: 找到xadmin的static下的js/xadmin.plugin.quick-form.js 大约在103行左右是注入表单数据的代码,如下: ```javascript this.$form.find('input[type=checkbox]').each(function(){ if(!$(this).attr('checked')){ off_check_box[$(this).attr('name')] = ''; } }) ``` 以上代码注释掉,重新写一个注入字段内容的代码,如下: ```javascript let formData = new FormData(); this.$form.find('input, select, textarea').each((index, ele) => { if (ele.type === "file") { formData.append(ele.name, ele.files[0]) } else { formData.append(ele.name, ele.value) } }) ``` 同时,下面ajax发送数据的一行也注释掉: ```javascript data: [this.$form.serialize(), $.param(off_check_box)].join('&'), ``` 替换为: ```javascript data: formData, ``` 至此,就修改完毕了。 注意:调试状态下这个js文件存放位置和正式上线可能不一样,所以两个地方都要修改。