Я работаю над приложением Laravel, и у меня есть функция для экспорта PDF-файла, созданного на основе данных, которые пользователь отправил в форму.
Я пытаюсь сделать содержимое этого PDF-файла условным, основываясь на значении одной из переменных PHP, поэтому добавил условия @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 загружается, хотя на самом деле он не загружается, когда я пытаюсь его открыть, - появляется ошибка .