2017-02-18 3 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?)를 사용하거나 모든 반복에서 레지스트리 항목을 교체해야합니다. 그렇게해도 문제가 해결되지 않으면 레지스트리 클래스 코드를 게시하여 문제를 더 깊이 파고들 수 있습니다.