2017-04-13 74 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