有了這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;
,所以它不是一個公共文件夾(並且你必須創建具有正確權限的文件夾)
所以我在這裏做了什麼,我重寫了PDF和PDFGenerator,我把代碼放在頁面的底部,其中class'PDFCore ','PDFGeneratorCore extends TCPDF'code block ended。我創建了具有chmod 777 -R權限的目錄發票,這是代碼路徑:$ filename = _PS_ROOT_DIR _。'/ invoices /'.$ filename ;.查看發票,我得到一個內部服務器錯誤(尋找網絡調試)的白頁,並沒有保存 – Somepub
您是否在覆蓋/ classes/pdf中創建了覆蓋文件,上面的內容在php標籤中?同時該權限應該是775或755(從不777),之後不要忘記刪除(或重命名)文件緩存/ class_index.php,你可以檢查error_log的錯誤。 – sadlyblue
謝謝你真的很多!我真的很感激!我現在正在工作,但仍然是一件事情..我將發票文件夾權限更改爲775,並且出現錯誤提示「TCPDF錯誤:無法創建輸出文件:/zzz/zzz/example/invoices/#W003200.pdf」並與777所有工作正常,我想知道爲什麼會發生這種情況? – Somepub