2017-02-18 70 views
1

我不知道爲什麼,但我的pdf批處理不起作用,現在我有這個錯誤。 來自類while循環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錯誤以通知您。

要麼使用唯一的鍵(可能是訂單的ID?),要麼在每次迭代中強制註冊表項被替換。如果這不能讓你再次追蹤,請發佈註冊表類代碼,以便我們深入研究問題。