我有一个Laravel/Angular应用程序,在其中一个页面上,用户可以选择将有关单个/选定交易的数据导出到PDF文件中。
生成的PDF当前显示3个页面(第一个页面用于每个实际交易,后续页面显示有关这些交易所属帐户的更多信息)。
我想为这项功能添加一些功能,这样,如果正在导出的交易只有一个存款日期,当其状态为“请求”时,那么实际上只应生成当前生成的PDF的第一页(正常生成的PDF的其余部分应被抑制)。
我添加了一个
if
对刀锋的陈述。显示PDF内容的php文件,如下所示:
@if(($transaction->count($transaction['transactionItem']) == 1) && ($transaction['transactionItem']['currentStatusId'] == '1010'))
<body ... >
// Content of first page of PDF here
</body>
@else
<body ... >
// Original content of full PDF here
</body>
@endif
在HTML中,带有调用函数下载PDF的链接的菜单项由以下内容编写:
<td class="provActionsCell contactAddressCell text-center table__priority-column" id="reduceWidth-doublePlus" dropdown>
<a href class="icon icon-kog" dropdownToggle></a>
<ul class="dropdown-menu" aria-labelledby="angular-simple-dropdown">
...
<li *ngIf="payer.provStatusTag !== 'NA'" (click)="exportSingleTransactionToPDF(payer)"><a href="">Download PDF</a></li>
</ul>
</td>
这个
exportSingleTransactionToPDF()
函数是在临时提醒中编写的。ts与:
exportSingleTransactionToPDF(payer) {
let requestData = (<any>Object).assign({});
console.log("requestData: ", requestData);
payer.loading = true;
requestData['transactionItem'] = payer;
console.log("requestData['transactionItem']: ", requestData['transactionItem']);
this.provService.generateSingleTransactionPDF(requestData).subscribe(
(data:any) => {
payer.loading = false;
this.showPrintDialog = false;
},
(error:any) => {
const message = new Message();
message.type = MessageType.ERROR;
message.message = error.message || 'There was a problem generating the PDF.';
this.messagingService.emitMessage(message);
payer.loading = false;
}
);
return false;
}
还有
generateSingleTransactionPDF()
它调用的函数在中定义
prov.service.ts
与:
generateSingleTransactionPDF(data: any): Observable<any> {
const requestOptions = new RequestOptions({ headers: this.pdfHeaders, responseType: ResponseContentType.Blob });
console.log("requestOptions: ", requestOptions);
console.log("data: ", data);
return this.http
.post(this.generateSingleTransactionPDFUrl, data, requestOptions)
.map((res: Response) => {
const blob = <Blob>res.blob();
FileSaver.saveAs(blob, `provisional-tax-reminder.pdf`);
})
.catch(this.handleError);
}
目前,当我尝试下载PDF时,我可以在控制台中看到我添加的一些调试,显示正在调用这些函数,然后我在浏览器中看到一条错误横幅,上面写着:
生成PDF时出现问题
这显然是来自
exportSingleTransactionToPDF()
函数,因为这是项目中唯一出现此错误消息的位置。调用时会引发此错误
generateSingleTransactionPDF()
函数调用返回一个错误,很明显
return
声明
generateSingleTransactionPDF()
以某种方式返回错误,但我不确定如何/为什么,或如何调试该错误是什么,以及是什么导致它。。。?
这个
generateSingleTransactionPDFUrl()
函数在
回来
声明
.post()
在prov开始时定义。服务ts文件包含:
private generateSingleTransactionPDFUrl: string = BASE_URL + '/web-api/t/prov/pdf';
浏览器控制台中显示一个错误,显示:
邮递http://...500(内部服务器错误)
无可比拟的反应
这似乎表明错误是因为HTTP请求的响应不可解析,但我不明白为什么会出现这种情况。。。这个
console.log()
我放在报告里的声明
generateSingleTransactionPDF()
在prov。服务ts显示
requestOptions
&
data
控制台中的变量-它们似乎保存了正确的数据。。。所以我不确定为什么它会说这个反应是不可接受的——有人有什么想法吗?
编辑
所以,在查看日志文件后,我似乎发现了一个错误:
下一个ErrorException:未定义变量:事务(视图:/…/rements.blade.php)/视图/419cdd3906d761bc1bb55581502a15d04c1fe7a7。菲律宾:9
这似乎是在抱怨
如果
我已经把刀放在刀口上了。php文件:
@if(($transaction->count($transaction['transactionItem']) == 1) && ($transaction['transactionItem']['currentStatusId'] == '1010'))
我应该如何访问这个
$transaction
叶片内部的变量。php文件?