2017-02-18 19 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'です。最初の反復は問題ありませんが、2回目の反復では、Noticeという文字列が出力され、すでにそのキーのレジストリエントリが存在しています。

関数$pdf->Output()は、PHPコード内に何らかの出力が既に生成されているかどうかをチェックします。 Noticeが出力に送信されたため、FPDFはレンダリングを開始できず、FPDFエラーを生成して通知します。

一意のキー(おそらく注文のID?)を使用するか、繰り返しごとにレジストリエントリを置き換えてください。それでも問題が解決しない場合は、レジストリのクラスコードを投稿して問題の詳細を調べることができます。