Я не знаю почему, но мой пакет PDF не работает, и теперь у меня есть эта ошибка.
Проблема исходит от класса внутри цикла while
Спасибо
Обратите внимание: OM \ Registry :: set — Заказ уже зарегистрирован и не подлежит замене в /home/www/shop/includes/OM/Registry.php в строке 33
Неустранимая ошибка: необработанное исключение: ошибка FPDF: некоторые данные уже были выведены, не удается отправить файл PDF в /home/www/boutique/ext/fpdf/fpdf.php:271 Трассировка стека: # 0 / home / www / boutique /ext/fpdf/fpdf.php(1063): FPDF-> Ошибка («Некоторые данные имеют …») # 1 /home/www/boutique/ext/fpdf/fpdf.php(999): FPDF-> _checkoutput () # 2 /home/www/boutique/admin/invoice_batch.php(570): FPDF-> Output () # 3 {main} в /home/www/boutique/ext/fpdf/fpdf.php в строке 271
Эта ошибка связана с этим элементом
// Classe pdf.php
$pdf = new \FPDF();
// $pdf->SetWidths(array(30,50,30,40));
while ($QordersInfo->fetch()) {
Registry::set('Order', new OrderAdmin($QordersInfo->valueInt('orders_id')));
$order = Registry::get('Order');
...
..
}
// PDF's created no
// output the file
$pdf->Output();
Если я напишу это, он «отлично работает», но отобразит только 1 счет.
// Classe pdf.php
$pdf = new \FPDF();
// $pdf->SetWidths(array(30,50,30,40));
while ($QordersInfo->fetch()) {
Registry::set('Order', new OrderAdmin($QordersInfo->valueInt('orders_id')));
$order = Registry::get('Order');
.....
// output the file
$pdf->Output();
}
Трудно отследить проблему, не зная, что Registry::set()
делает, но похоже, что первый параметр этой функции должен быть уникальным ключом. В вашем коде ключ всегда 'Order'
в каждой итерации цикла. Первая итерация будет в порядке, но во второй итерации она сгенерирует вывод, чтобы дать вам Notice
что там уже есть запись реестра с этим ключом.
$pdf->Output()
Функция проверяет, что-нибудь в вашем PHP-коде уже создало какой-либо вывод. Поскольку Notice
был отправлен на вывод, FPDF не может начать рендеринг и выдает ошибку FPDF, чтобы вы знали.
Либо используйте уникальный ключ (возможно, идентификатор заказа?), Либо принудительно заменяйте запись реестра в каждой итерации. Если это не поможет вам снова, отправьте код класса Registry, чтобы мы могли углубиться в проблему.
Других решений пока нет …