php - Laravel-为什么我的刀片文件在 if、else 和 endif 都存在时会出现意外的文件结尾?
问题描述
我正在开发一个 Laravel 应用程序,并且具有导出 PDF 文件的功能,该文件是根据用户提交给表单的输入生成的。
我正在尝试根据 PHP 变量之一的值使该 PDF 的内容成为有条件的,因此已将@if
,@else
和@endif
条件添加到刀片文件中,但由于某种原因,现在尝试在控制台中出现错误导出 PDF:
解析错误:语法错误,文件意外结束,期待 elseif (T_ELSEIF) 或 else (T_ELSE) 或 endif (T_ENDIF)(查看:/home/.../reminder.blade.php)
Blade.php 文件当前使用以下内容编写:
<html>
<head>
<title>Provisional Reminder</title>
<link rel="stylesheet" href="{{ url('') }}/css/pdf.css">
</head>
@if(( count( $request->transactionItem ) == 1 ) && $request->transactionItem->currentStatusId == '1010')
<body style="-webkit-font-smoothing: antialiased; font-family: 'Roboto'; font-weight: normal; margin: 0; padding: 0;">
<p>if statement run in reminder.blade.php</p>
</body>
@else
<body>
<p>else statement run in reminder.blade.php</p>
</body>
@endif
</html>
else
&都在endif
那里,为什么我会收到这个错误?如何根据请求变量的值有条件地显示刀片文件的内容?
PDF 由 PHP 函数生成:
private function generateProvPDF($transactions, $globalData)
{
$data = ['transactions' => $transactions, 'globalData' => $globalData];
//dd("transactions: ", $transactions);
//$view = \View::make('pdfs.reminder', $data);
//$contents = $view->render();
//echo $contents;
//die;
$pdf = \PDF::loadView('pdfs.reminder', $data)
->setOption('encoding', 'utf-8')
->setOption('margin-top', 0)
->setOption('margin-bottom', 0)
->setOption('margin-left', 0)
->setOption('margin-right', 0)
->setPaper('a4');
return $pdf->stream();
}
编辑
我的 PHP 控制器中调用此函数的代码是:
public function getSingleTransactionPDF(Request $request)
{
$transactionItem = $request->input('transactionItem');
$vTransactionItem = (array)DB::table('transaction.vTransactionPDF')->where('transactionItemId', $transactionItem['transactionItemId'])->first();
if (!empty($vTransactionItem))
{
$transactionItem = array_merge($transactionItem, $vTransactionItem);
$loggedInUser = auth()->user();
$globalData = $this->retrieveGlobalPDFData();
$transactionsData = $this->retrievePDFPrimaryLineItemData([$transactionItem], $loggedInUser);
dd("transactionsData, globalData: ", $transactionsData, $globalData);
return $this->generateProvTaxPDF($transactionsData, $globalData);
}
else
{
return response()->json([
'error' => true,
'message' => 'Transaction not found.',
], 404);
}
}
如果我在这里注释掉这dd("transactionsData ...", ...)
行,我会得到Parse error
上面提到的。但是,如果我把它留dd()
在里面,我可以看到变量包含我期望的值,并且下载了一个 PDF,尽管当我尝试打开它时它实际上并没有加载——它出现了一个错误。
解决方案
尝试用这个替换第一个 @if 语句
@if( count( $request->transactionItem ) == 1 && $request->transactionItem->currentStatusId == '1010')
推荐阅读
- scikit-learn - scikit学习中是否有任何内置的线性内核库,如RBF,SE?
- nginx - 为什么在 nginx 入口(反向代理)和重写目标上重定向(服务器端)到 root
- c - 在 C 中将函数转换为具有不同数量参数的另一个函数
- python - Python:需要关于函数的帮助
- r - 将 1 列 tibble 列表与单个 1 列 tibble 进行比较
- node.js - await 仅在 nodejs 的异步函数中有效
- arrays - 在逻辑应用中加入两个数组
- c# - 是否可以模拟 Specflow 的 ScenarioContext?(C#)
- r - 尝试使用 ggplot 将数据点映射到 shapefile
- node.js - mongodb 缝合功能在使用节点模式 @jimp 时出错