2017-02-18 2 views
1

Я не знаю, почему, но моя версия pdf не работает, и теперь у меня есть эта ошибка. Проблема приходят из класса внутри цикла в то время какОшибка с FPDF

Спасибо

Notice: OM\Registry::set - Order already registered and is not forced to be replaced in /home/www/shop/includes/OM/Registry.php on line 33 Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file in /home/www/boutique/ext/fpdf/fpdf.php:271 Stack trace: #0 /home/www/boutique/ext/fpdf/fpdf.php(1063): FPDF->Error('Some data has a...') #1 /home/www/boutique/ext/fpdf/fpdf.php(999): FPDF->_checkoutput() #2 /home/www/boutique/admin/invoice_batch.php(570): FPDF->Output() #3 {main} thrown in /home/www/boutique/ext/fpdf/fpdf.php on line 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(); 
} 
+1

Очень понятная ошибка: «Некоторые данные уже выведены, не могут отправить файл PDF». Что-то еще было выпущено до того, как вы попытаетесь вывести PDF-файл. – miken32

+0

, пожалуйста, предоставьте полный код, чтобы мы поняли его ... –

+0

вы получаете некоторый результат перед рендерингом pdf-документа, подавляете свое уведомление, вывод предупреждения в ini_set .... –

ответ

1

трудно проследить проблему, не зная, что Registry::set() делает, но это выглядит как первый параметр этой функции должен быть уникальным ключом. В вашем коде ключ всегда равен 'Order' на каждой итерации цикла. Первая итерация будет прекрасной, но на второй итерации она будет генерировать вывод, чтобы дать вам Notice, что уже есть запись реестра с этим ключом.

Функция $pdf->Output() проверяет, что-либо в вашем PHP-коде уже произвело какой-либо вывод. Поскольку Notice был отправлен на вывод, FPDF не может начать рендеринг и создает ошибку FPDF, чтобы вы знали.

Использовать уникальный ключ (возможно, идентификатор заказа?) Или принудительно заменить запись реестра на каждой итерации. Если это не приведет вас к следующему этапу, отправьте код класса реестра, чтобы мы могли глубже погрузиться в проблему.

Смежные вопросы