1

私はmail_merge関数(cakephpを使用)を持っています。この関数をブラウザから直接呼び出すと、たとえばdomain.com/contacts/mail_mergeがPDFを生成し、必要に応じてデータベースにマップされたフィールドとともにサーバーに保存します。

ただし、このmail_merge関数を別の関数から呼び出そうとすると。例:$ this-> mail_merge($ cond、1); PDFは生成されません。データベースフィールドはまだmail_merge関数に送られているので、この問題ではありません。なぜこれが起こっているのか考えていますか?以下のコードを更新して、PDFに配置しようとしているコードを含む単純な生成されたtxtファイルを含めました。これは機能するため、関数から呼び出されたときにPDFを生成しないmPDFに関するものがあります。

ありがとう

私のmail_merge関数は次のとおりです。

// FUNCTION GENERATE MAIL MERGE - mPDF
// -------------------------------------------------------------->
function mail_merge($conditions=NULL, $mail_merge_id=1)
{
    // REMOVE THE STANDARD LAYOUT
    // ------------------------------------------------------>
    $this->layout = null;

    // GET THE CONTACTS
    // ------------------------------------------------------------->
    $contacts = $this->Contact->Card->find('all', array(
                                                  'limit' => 10, 
                                                  //'fields' => $fields,
                                                'contain' => array('Contact', 'Prospect', 'SaleDetail'),
                                                  'conditions' => $conditions
                                                  ));
    $this->set('contacts', $contacts);

    // GE THE CONTENTS
    // ------------------------------------------------------------>
    $this->loadModel('MailMerge');
    $content = $this->MailMerge->find('first', array(
                                                'conditions' => array('MailMerge.id' => $mail_merge_id),
                                                'fields' => array('MailMerge.description')
                                                ));
    $this->set('content', $content);

    // initializing mPDF
    // --------------------------------------------------------------------------->
    $this->Mpdf->init();

    // RENDER THE VIEW AND SET AS A VARIABLE TO WRITE THE HTML
    // --------------------------------------------------------------------------->
    $response = $this->render('mail_merge');
    $thebody = $response->body();
    $this->Mpdf->WriteHTML($thebody);

    // setting filename of output pdf file
    // --------------------------------------------------------------------------->
    $thefilename = "mail_merge_".date("d.m.Y_His").".pdf";
    $this->Mpdf->setFilename(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename); 

    // setting output to I, D, F, S
    // --------------------------------------------------------------------------->
    $this->Mpdf->setOutput('F');

    // TEMP - CREATE TXT FILE ON THE SERVER
    // ------------------------------------------------------------------------>
    $thefilenametxt = "mail_merge_".date("d.m.Y_His").".txt";
    $ourFileHandle = fopen(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilenametxt, 'w');
    fwrite($ourFileHandle, $thebody); 
    fclose($ourFileHandle); 

    return $thefilename;

} // END MAIL MERGE
4

1 に答える 1

1

コンポーネントのsetOutput関数にある問題を発見しました。

私が変更したとき:

$this->Mpdf->setFilename(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename); 
$this->Mpdf->setOutput('F');

$this->Mpdf->Output(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename, 'F');

必要に応じて機能しました。

于 2012-10-11T23:40:45.067 に答える