我有一个包含以下方式的记录的表,我希望它包含的数据以 PDF 格式从一个记录打印到另一个记录,而不是打印所有记录,这就是为什么在对应于表的表中生成一个按钮分开记录。
@foreach($puos as $puo)
<tr>
<td>{{ $puo->id }}</td>
<td>{{ $puo->puo }}</td>
<td>{{ $puo->compania->nombre }}</td>
<td>{{ $puo->proyecto->nombre }}</td>
<td>{{ $puo->partida }}</td>
<td>{{ $puo->proveedor->nombre }}</td>
<td>{{ $puo->forma_pago }}</td>
<td>{{ $puo->usuario->nombre }}</td>
<td>{{ $puo->usuario1->nombre }}</td>
<td>{{ $puo->producto->nombre }}</td>
<td>{{ $puo->cantidad }}</td>
<td>{{ $puo->precio_unitario }}</td>
<td>{{ $puo->descuento_porcentaje }}</td>
<td>{{ $puo->iva }}</td>
<!--<td>{{ $puo->precio_total }}</td>-->
<td>{{ $puo->descuento }}</td>
<td>{{ $puo->preciounitario_descuento }}</td>
<td>{{ $puo->iva_total }}</td>
<td>{{ $puo->total }}</td>
<td>
<a href="{{ route('puos.edit', $puo->id) }}" class="btn btn-warning"> <span class="glyphicon glyphicon-wrench" aria-hidden="true"></span></a>
<a href="{{ route('puos.destroy', $puo->id) }}" class="btn btn-danger"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true" onclick="return confirm('¿Seguro que quieres borrarlo')"></span></a>
<a href="{{ route('pdfview' , $puo->id) }}"><button class="btn btn-c">descargar pdf</button></a>
</td>
</tr>
@endforeach
第三个按钮调用一个函数来打印 PDF,它完成了它的工作,但最终得到了一个空白页,https://imgur.com/a/CWJCM
在控制器中我有这个:
public function imprimir($id){
$puo= Puo::find($id);
$view = \View::make('pdfview', compact('puo', $puo))->render();
$pdf = \App::make('dompdf.wrapper');
$pdf->loadHTML($view);
return $pdf->download("pdfview.pdf");
}
它打印的内容包含以下数据:
<div class="row">
<div class="col-xs-12">
<div class="box box-info">
<div class="box-header">
<div class="box-tools">
</div>
</div><!-- /.box-header -->
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
@foreach($puos as $puo)
<tr>
<td>{{ $puo->id }}</td>
<td>{{ $puo->puo }}</td>
<td>{{ $puo->compania->nombre }}</td>
<td>{{ $puo->proyecto->nombre }}</td>
<td>{{ $puo->partida }}</td>
<td>{{ $puo->proveedor->nombre }}</td>
<td>{{ $puo->forma_pago }}</td>
<td>{{ $puo->usuario->nombre }}</td>
<td>{{ $puo->usuario1->nombre }}</td>
<td>{{ $puo->producto->nombre }}</td>
<td>{{ $puo->cantidad }}</td>
<td>{{ $puo->precio_unitario }}</td>
<td>{{ $puo->descuento_porcentaje }}</td>
<td>{{ $puo->iva }}</td>
<td>{{ $puo->descuento }}</td>
<td>{{ $puo->preciounitario_descuento }}</td>
<td>{{ $puo->iva_total }}</td>
<td>{{ $puo->total }}</td>
</tr>
@endforeach
</tbody></table>
</div><!-- /.box-body -->
</div><!-- /.box -->
</div>
</div>
这archivo de rutas
是在其中生成的:
Route::get('pdfview', 'PuosController@imprimir');
我有一个解决方案,有点混淆了其中一个同伴的答案。
在文件
rutas
中,我将其配置如下:在
Index
我的表格PUO
中,按钮如下所示:Imprimir
中的函数PuosController
您需要做的第一件事是安装DOMPDF:
您添加 ServiceProvider
你添加门面
安装后,我们将为 pdf 创建控制器和视图:
控制器:
查看pdf
请记住,
DOMPDF
它与 不兼容bootstrap
,因此建议直接使用我们需要的 css 来创建视图,而不是其他任何东西,另一方面,如果您只是要从表中带一条记录,则不需要@foreach
. _我从您放在视图中的列中删除了一些列以简化示例。
显然我假设你知道如何在 Laravel 中创建和使用必要的路由。
首先更改下载pdf的按钮。而不是路由使用 url 去控制器
现在你的路线例如
并在控制器中执行以下操作:
我的建议是您使用Barryvdh Laravel DomPDF 包。
此外,您可以使用Route Model Binding将模型直接注入控制器。Laravel 已经负责管理模型是否存在并生成相应的错误代码。
对于
boot
del中的绑定RouteServiceProvider
包含:在路线中:
然后在控制器中你可以直接定义对象和包
Barryvdh
有两行代码: