2016-07-22 29 views
0

我正在开发产品管理系统,并且有一个称为购买的模块。如何在laravel中提交表单时生成pdf 5.2

我也写过store()方法的控制器和模型部分。

现在我想在点击提交按钮时生成发票。我使用PDF生成器插件作为barryvdh/laravel-dompdf。我是PHP & Laravel的新手,只想知道执行PDF生成过程的指令。

+0

有文件中的一切,你只需要按照它https://github.com/barryvdh/laravel-dompdf –

回答

0

您可以按照安装步骤Laravel 5:

  1. 此,Barryvdh\DomPDF\ServiceProvider::class,config/app.php文件添加为的ServiceProvider
  2. config/app.php文件此,'PDF' => Barryvdh\DomPDF\Facade::class,添加到您的外墙

然后在您的商店方法中,保存所有信息后,您可以生成如下所示的PDF:

$pdf = \PDF::loadView('pdf.invoice', $data); 
return $pdf->download('invoice.pdf'); 

这将加载存储在resources/views/pdf与存储在$data的值invoice视图,然后返回一个叫做invoice.pdf一个可下载的文件。

这一切都直接来自使用部分的DomPDF docs

+0

我明白你所说的,但我与这$数据混淆。你能告诉我如何表明这一点。我不知道应该把$ data放在哪里,就像$ data = array('test'=> $ request-> get('test_name'),........ ......... );然后“你给的代码” –

+0

@sandunijayawardena你使用它类似于你如何使用'邮件',如果你曾经使用过。 '$ data'是一个包含您传入并可以使用的键和值的数组。例如'$ data ['name'] =“name”;'可以让你在视图内使用'$ name'。 – James

0

根据本Github Link

2-窗体页

<form id="FOO" method="POST" action="/pdf"> 

    <input type="text" name="object" > 
    <button type="submit">Generate</button> 

</form> 

3-路由安装DOMPDF:Route::post('pdf' , '[email protected]');

请注意,在这里,你将需要包含一个隐藏的输入,使用csrf令牌,或者只需在中排除此路由中间件,否则它不会让你发布(如果你还没有验证工作呢,不介意这个通知)

4-控制器现在

public function PDFGenerator (Request $request){ 
    $html = <<<ENDHTML 

    <!DOCTYPE html> 
    <html> 
    <head> 
     <title>Foo</title> 
     <meta charset="utf-8"> 
    </head> 
    <body style="margin: 30px;"> 

     <center style="text-decoration: underline;">{$request->object}</center> 

    </body> 
    </html> 
ENDHTML; 
    $dompdf = App::make('dompdf.wrapper'); 
    $dompdf->loadHTML($html); 
    $dompdf->stream("hello.pdf"); 
    return $dompdf->stream(); 

} 

This is the Heredoc documentation页面万一你需要更多关于如何使用它的信息。

不要忘记将库包含在控制器中,等待您的反馈。