【发布时间】:2021-07-02 00:11:24
【问题描述】:
我想问一些关于使用 laravel 和一些插件 maatwebsite/excel 导出 excel 的问题,当我通过正常教程时一切正常,就像正常人一样工作没有错误,但我的问题是当我尝试进行自定义查询时我的ExampleExport.php (not real) 和我的 excel 文件的结果没有下载,我在控制台上看到我的结果,没有显示任何错误,但是当我单击网络选项卡并再次单击我的 url 时,错误消息显示如下:
The GET method is not supported for this route. Supported methods: POST.
无论如何,当您尝试访问post 方法时,我的错误是正常的,并且会显示该错误,但是是否有其他方法可以解决我的问题,以便我可以下载我的 excel 文件?我希望有什么方法可以解决我的问题,我想把我的代码放在下面,这样大家就可以知道我遇到了什么问题,谢谢你,祝你有美好的一天
JQUERY:
// export excel button click
$("#export_excel").on('click', function () {
const yearInput = $("#year_input").val();
// get api data only yearInput
$.ajax({
url: `report-payment/filter-data/year_result=${yearInput}`,
method: "GET",
data: {
yearInput: yearInput
},
success: function (success) {
*...* <= I skip this code
$.ajax({
url: `report-payment/export-excel`,
type: "POST",
dataType: "json",
data: {
nameOccupant: infoNameOccupant,
roomOccupant: infoRoomOccupant,
locationRoomOccupant: infoLocationRoomOccupant,
infoPayment: infoPayment
},
success: function (success) {
if (success) {
console.log('success');
}
}
});
}
});
});
控制器:
public function paymentExportExcel(Request $filter)
{
$get_name_occupant = $filter->nameOccupant;
$get_room_occupant = $filter->roomOccupant;
$get_location_room_occupant = $filter->locationRoomOccupant;
$get_info_payment = $filter->infoPayment;
return Excel::download(new PaymentExport($get_name_occupant, $get_room_occupant, $get_location_room_occupant, $get_info_payment), 'report-payment.xlsx');
}
文件导出:
public function collection()
{
for ($payment = 0; $payment < count($this->info_payment); $payment++) {
$raw_info_payment[] = [
'info_payment' => $this->info_payment[$payment]
];
}
for ($payment = 0; $payment < count($raw_info_payment); $payment++) {
$get_arr_info_payment[] = \array_map(function ($value) {
return $value == "-1" || $value == "-" ? "Belum Lunas" : $value;
}, $raw_info_payment[$payment]['info_payment']);
}
// make a new object to insert a new data
for ($data = 0; $data < count($this->name_occupant); $data++) {
$data_info_payment[] = [
"name_occupant" => $this->name_occupant[$data],
"room_occupant" => $this->room_occupant[$data],
"location_room_occupant" => $this->location_room_occupant[$data],
"info_payment" => $this->info_payment[$data]
];
}
return collect($data_info_payment);
}
【问题讨论】: