gpt4 book ai didi

php - egyg33k Bundle ,从 ajax 调用生成 csv

转载 作者:行者123 更新时间:2023-12-01 08:36:50 24 4
gpt4 key购买 nike

我正在尝试使用我在 symfony 项目中使用的 egyg33k 包生成一个 csv 文件。

我有一根 Twig ,其中包含两个日期选择器输入和一个按钮。当我单击按钮时,我获取两个日期选择器的值并将它们传递给 php 操作以在查询生成器上使用它们(所有这些都有效),但文件不会开始下载。相反,我在浏览器控制台获取内容(见图)此外,该操作在使用 ajax 之前是有效的。

Photo 1

ajax 调用:

$(document).ready(function() {
$("#get_extract").on("click", function() {
$.ajax({
method: "POST",
url: "/back-office/extraction",
data: {
begin_date: $("#begin_date").val(),
end_date: $("#end_date").val()
}
})
});
});

PHP:

public function getExtractRecordsAction(Request $request)
{
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
$beginDate = $request->get('begin_date');
$endDate = $request->get('end_date');

$recordsRepository = $this->getDoctrine()->getRepository(Record::class);
$query = $recordsRepository->createQueryBuilder('r')
->where('r.createdAt BETWEEN :beginDate AND :endDate')
->setParameter('beginDate', $beginDate)
->setParameter('endDate', $endDate)
->getQuery();

$records = $query->getResult();
$writer = $this->container->get('egyg33k.csv.writer');
$csv = $writer::createFromFileObject(new \SplTempFileObject());
$csv->insertOne([
'ID',
'FIRST_NAME',
'LAST_NAME',
'CIVILITY',
'PHONE_NUMBER',
'EMAIL',
'ZIP_CODE',
'OPTIN',

]);
foreach ($records as $record) {
$csv->insertOne([
$record->getId(),
$record->getPersonalDetails()->getFirstName(),
$record->getPersonalDetails()->getLastName(),
$record->getPersonalDetails()->getCivility(),
$record->getPersonalDetails()->getPhoneNumber(),
$record->getPersonalDetails()->getEmail(),
$record->getPersonalDetails()->getZipCode(),
$record->getPersonalDetails()->getOptin(),


]);
}
$csv->output('EXAMPLE.csv');
exit();
}
}

最佳答案

Ciao,请延长您的ajax调用,它只是下载您需要强制下载文件的数据。实际上,ajax 调用将数据从远程传输到本地浏览器,因此您只需要一种方法让浏览器将所有内容放入文件中并开始本地下载(从浏览器到下载文件夹)

$("#get_extract").on("点击", function() {
$.ajax({
方法:“POST”,
url: "/后台/提取",
数据: {
开始日期:$("#begin_date").val(),
结束日期:$("#end_date").val()
},
成功:函数(csv_content){
让文件名 = 'data.csv';
让 csvFile = new Blob([csv_content], {type: "text/csv"});
让 downloadLink = document.createElement("a");
downloadLink.download = 文件名;
downloadLink.href = window.URL.createObjectURL(csvFile);
document.body.appendChild(downloadLink);
下载链接.click();
}
})

关于php - egyg33k Bundle ,从 ajax 调用生成 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com