对于Laravel来说,我是一个新手,并且偶然发现了表单中文件上传的问题:
基本上我需要在提交表单时上传多个文件 - 初始文件上传元素是根据需要使用JQuery动态添加的,如下所示:
// Add upload fields to appointment form
var upload_button = $('.upload-appointment-file'); // Upload Button ID
var upload_wrapper = $('.upload-file-holder'); // Field Wrapper
$(upload_button).click(function(e){
e.preventDefault();
$(upload_wrapper).append(
'<div>' +
'<div class="row">' +
'<div class="form-group col-xs-12 col-sm-3 form-group-sm">' +
'<input type="file" name="file_name[]">' +
'</div>' +
'<div class="form-group col-xs-12 col-sm-3 form-group-sm">' +
'<input type="text" class="form-control" name="additional_name[]" placeholder="Document Title">' +
'</div>' +
'<div class="form-group col-xs-12 col-sm-3 form-group-sm">' +
'<select name="priority[]" class="form-control">' +
'<option value="">File Priority...</option>' +
'<option value="1">Important: Signature and Date Required</option>' +
'</select>' +
'</div>' +
'</div>' +
'<div class="row">' +
'<div class="form-group col-xs-12 col-sm-9">' +
'<textarea name="upload_description[]" class="form-control" rows="4" placeholder="Additional instructions for Agent in relation to this file"></textarea>' +
'</div>' +
'</div>' +
'<button type="button" class="btn btn-info remove_upload">Remove</button><hr>' +
'</div>'
);
});
$(upload_wrapper).on("click",".remove_upload", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').slideUp(function(){$(this).remove()});
});
此表单中还有其他静态元素使用刀片模板。提交表单时,我使用请求类来验证输入(类CreateAppointmentRequest extends Request {}),它在规则方法中保存验证规则。
当验证失败时,它返回到原始表单页面 - 在这里,我需要重建文件上传输入并通过@for循环重新填充原始数据的字段并注入{{old('additional_name')[$ i]}}等到新创建的字段(与JQuery创建的字段相同)。
我的问题是我可以从返回数据中获取除原始file_name字段之外的所有字段。 file_name返回一个空数组。
当我成功提交表单时,file_name的构造如下:
“file_name”=&gt;数组:1 [
0 => UploadedFile {#27
-test: false
-originalName: "pluto_planet.jpeg"
-mimeType: "image/jpeg"
-size: 53963
-error: 0
}
我需要做的就是以某种方式从验证错误中获取文件名并重新填充表单。我不确定我是否会以正确的方式解决这个问题。