大家好,我试图在我的symfony项目中使用egyg33k捆绑包im生成一个csv文件:
重点是:
我有一个包含2个日期选择器输入和一个按钮的树枝,当我单击按钮时,我得到2个日期选择器的值并将它们传递给php操作,以在查询生成器上使用它们(所有这些的作品),但除了我在浏览器控制台上获取文件内容之外,文件没有开始下载(参见照片1) 此外,该操作在使用ajax之前已经起作用。
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();
}
}
答案 0 :(得分:2)
Ciao,请扩展您的ajax调用,它只是下载您需要强制下载文件的数据。实际上,ajax调用将数据从远程传输到本地浏览器,因此您只需要一种方法,让浏览器将所有内容放入文件中并开始本地下载(从浏览器到“下载”文件夹)
test:
image: node:10
script:
- git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/".insteadOf https://gitlab.com/
- npm install
- npm test