2017-04-13 145 views
0

所以我在尋找一個解決方案可以自動保存發票到我的服務器的文件夾,當我按下視圖發票生成的URL時(http://www.example.com/admin11111/index.php?controller=AdminPdf&token=「令牌」 & submitAction = generateInvoicePDF & id_order = 「ID」)。的Prestashop,生成發票(PDF)自動

我也沒有對谷歌的研究,但這個解決方案,我莫名其妙地沒有工作:https://www.prestash...es-in-a-folder/

從的Prestashop論壇我得到了我應該使用shell腳本的意見,但使用像wget或其它外殼的下載只獲得我的HTML文件,因爲當我在Prestashop後臺下載發票時,需要一些時間來生成,並且稍後會出現下載保存。

回答

1

有了這2個覆蓋你可以做到這一點。

覆蓋PDF.php:

class PDF extends PDFCore 
{ 
    public function render($display = true) 
    { 
     if($this->template == PDF::TEMPLATE_INVOICE) 
      parent::render('F', true); 

     return parent::render($display); 
    } 
} 

覆蓋PDFGenerator.php:

class PDFGenerator extends PDFGeneratorCore 
{ 
    public function render($filename, $display = true) 
    { 
     if (empty($filename)) { 
      throw new PrestaShopException('Missing filename.'); 
     } 

     $this->lastPage(); 

     if ($display === true) { 
      $output = 'D'; 
     } elseif ($display === false) { 
      $output = 'S'; 
     } elseif ($display == 'D') { 
      $output = 'D'; 
     } elseif ($display == 'S') { 
      $output = 'S'; 
     } elseif ($display == 'F') { 
      $output = 'F'; 
      $filename = _PS_ROOT_DIR_.'/'.$filename; 
     } else { 
      $output = 'I'; 
     } 

     return $this->output($filename, $output); 
    } 
} 

記得選擇比_PS_ROOT_DIR_其它另一個文件夾。這只是爲了測試。嘗試$filename = _PS_ROOT_DIR_.'/../invoices/'.$filename;,所以它不是一個公共文件夾(並且你必須創建具有正確權限的文件夾)

+0

所以我在這裏做了什麼,我重寫了PDF和PDFGenerator,我把代碼放在頁面的底部,其中class'PDFCore ','PDFGeneratorCore extends TCPDF'code block ended。我創建了具有chmod 777 -R權限的目錄發票,這是代碼路徑:$ filename = _PS_ROOT_DIR _。'/ invoices /'.$ filename ;.查看發票,我得到一個內部服務器錯誤(尋找網絡調試)的白頁,並沒有保存 – Somepub

+0

您是否在覆蓋/ classes/pdf中創建了覆蓋文件,上面的內容在php標籤中?同時該權限應該是775或755(從不777),之後不要忘記刪除(或重命名)文件緩存/ class_index.php,你可以檢查error_log的錯誤。 – sadlyblue

+0

謝謝你真的很多!我真的很感激!我現在正在工作,但仍然是一件事情..我將發票文件夾權限更改爲775,並且出現錯誤提示「TCPDF錯誤:無法創建輸出文件:/zzz/zzz/example/invoices/#W003200.pdf」並與777所有工作正常,我想知道爲什麼會發生這種情況? – Somepub