Laravel 6从Scratch的View Example Tutorial中生成PDF
Laravel 6从视图示例生成PDF教程从头开始是今天的主题。如果您想了解基本的laravel功能,请查看我的文章Laravel 6 Crud Example From Scratch。对于此示例,我们使用Dompdf库。 Dompdf是一个HTML到PDF转换器dompdf(大多数)是符合CSS 2.1的HTML布局和用PHP语言编写的渲染引擎。
它是样式驱动的渲染器:它将下载和读取外部样式表,内联样式标记以及各个HTML元素的所有样式属性。它还支持大多数表示HTML属性。
内容概述
- 1 Laravel 6从视图生成PDF
- 2步骤:1下载laravel-dompdf软件包
- 3步骤:2配置包laravel 6应用程序
- 4步骤:3创建布局刀片文件
- 5步骤4:创建模型和迁移文件
- 6步骤5:创建控制器和路由
- 7步骤:6创建表单刀片文件以输入数据
- 8步骤7:将数据存储在数据库中
- 9步骤:8创建用于显示数据的视图文件。
- 10步骤:9创建下载pdf文件的路线
- 11步骤:10创建pdf.blade.php文件来设计我们的pdf
- 12步骤:11编写控制器功能以下载PDF
- 13结论
Laravel 6从视图生成PDF
如果您使用的是旧版本的Laravel,请查看如何在Laravel 5中生成PDF教程。
步骤:1下载laravel-dompdf包
键入以下命令以安装laravel-dompdf软件包。
composer require barryvdh/laravel-dompdf
➜ laravel6 git:(master) composer require barryvdh/laravel-dompdf Using version ^0.8.5 for barryvdh/laravel-dompdf ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 5 installs, 0 updates, 0 removals - Installing sabberworm/php-css-parser (8.3.0): Downloading (100%) - Installing phenx/php-svg-lib (v0.3.3): Downloading (100%) - Installing phenx/php-font-lib (0.5.1): Downloading (100%) - Installing dompdf/dompdf (v0.8.3): Downloading (100%) - Installing barryvdh/laravel-dompdf (v0.8.5): Downloading (100%) dompdf/dompdf suggests installing ext-imagick (Improves image processing performance) dompdf/dompdf suggests installing ext-gmagick (Improves image processing performance) Writing lock file Generating optimized autoload files > IlluminateFoundationComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: barryvdh/laravel-dompdf Discovered Package: facade/ignition Discovered Package: fideloper/proxy Discovered Package: laravel/tinker Discovered Package: laravel/ui Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully.
步骤:2配置包laravel 6应用程序
所以转到config >> app.php并添加以下配置。
'providers' => ( .... BarryvdhDomPDFServiceProvider::class, ), 'aliases' => ( .... 'PDF' => BarryvdhDomPDFFacade::class, ),
这里我们为我们的应用程序注册一个PDF寄存器提供程序,并为它设置别名。所以当我们需要创建PDF时,我们需要将它包含在我们的命名空间中,比如
use PDF;
然后,我们实例化一个PDF类并使用其API进一步增强生成的PDF文件。
步骤:3创建布局刀片文件
在资源>> views文件夹中,创建一个名为layout.blade.php的新文件。
Laravel 6 CRUD示例 @yield( '内容')
第4步:创建模型和迁移文件
我们将使用以下命令创建模型和迁移文件。
php artisan make:model Disneyplus -m
现在,转到(timestamp).create_disneypluses_table.php文件并添加列。
public function up() { Schema::create('disneypluses', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('show_name'); $table->string('series'); $table->string('lead_actor'); $table->timestamps(); }); }
现在,使用以下命令迁移数据库。
php artisan migrate
第5步:创建控制器和路由
下一步是创建DisneyplusController.php文件。
php artisan make:controller DisneyplusController
现在,在routes >> web.php文件中添加两个路由。
// web.php Route::get('disneyplus', 'DisneyController@create')->name('disneyplus.create'); Route::post('disneyplus', 'DisneyController@store')->name('disneyplus.store');
现在,在DisneyplusController.php文件中创建两个方法。
步骤:6创建表单刀片文件以输入数据
现在,在views文件夹中,创建一个名为form.blade.php文件的文件。添加以下代码。
@extends('layout') @section('content')@endsectionAdd Disneyplus Shows@if ($errors->any())@foreach ($errors->all() as $error)
- {{ $error }}
@endforeach
@endif第7步:将数据存储在数据库中
现在,我们将在DisneyplusController.php文件中编写这两个函数。
validate(( 'show_name' => 'required|max:255', 'series' => 'required|max:255', 'lead_actor' => 'required|max:255', )); Disneyplus::create($validatedData); return redirect('/disneyplus')->with('success', 'Disney Plus Show is successfully saved'); } }因此,在上面的文件中,首先,我们已经显示了表单文件,然后在store函数中,我们检查验证然后将数据存储到数据库中。
另外,在Disneyplus.php模型文件中添加可填写字段。
现在,转到这条路线:http://laravel6.test/disneyplus或http:// localhost:8000 / disneyplus
你会看到一个表格。尝试保存数据,如果代码中的所有内容都正确,那么您将在数据库中看到一个条目。
步骤:8创建用于显示数据的视图文件。
在创建视图文件之前,我们需要在web.php中添加一个路由。
// web.php Route::get('disneyplus/list', 'DisneyplusController@index')->name('disneyplus.index');现在,创建一个名为list.blade.php文件的视图文件。添加以下代码。
@extends('layout') @section('content')
ID | Show Name | Series | Lead Actor | Action | @foreach($shows as $show)
---|---|---|---|
{{$show->id}} | {{$show->show_name}} | {{$show->series}} | {{$show->lead_actor}} |
现在,在DisneyplusController.php文件的index()函数中添加代码。
public function index() { $shows = Disneyplus::all(); return view('list', compact('shows')); }
现在,转到http://laravel6.test/disneyplus/list或http:// localhost:8000 / disneyplus / list
您将看到节目列表。
步骤:9创建下载pdf文件的路径
在路由文件中添加以下代码。
// web.php Route::get('/downloadPDF/{id}','DisneyplusController@downloadPDF');
现在,更新list.blade.php文件并添加下载PDF链接。
@extends('layout') @section('content')
ID | Show Name | Series | Lead Actor | Action | @foreach($shows as $show)
---|---|---|---|---|
{{$show->id}} | {{$show->show_name}} | {{$show->series}} | {{$show->lead_actor}} | id)}}">Download PDF |
步骤:10创建pdf.blade.php文件来设计我们的pdf
您可以创建新的DOMPDF实例并加载HTML字符串,文件或刀片视图名称。您可以将其保存到文件或流中。
好的,在views文件夹中,创建一个名为pdf.blade.php文件的文件,并添加以下代码。
Show Name | Series | Lead Actor |
{{$show->show_name}} | {{$show->series}} | {{$show->lead_actor}} |
我们创建了一个简单的表格,它将在PDF中生成。
步骤:11编写控制器功能以下载PDF
在DisneyplusController.php文件中编写以下代码。
// DisneyplusController.php public function downloadPDF($id) { $show = Disneyplus::find($id); $pdf = PDF::loadView('pdf', compact('show')); return $pdf->download('disney.pdf'); }
现在,转到http://laravel6.test/disneyplus/list或http:// localhost:8000 / disneyplus / list,然后单击Download PDF链接。
您将看到它下载PDF文件并打开该PDF,您将看到该表包含显示列表。
结论
这是Laravel 6 Generate PDF的简单示例。最后,我们关于如何在Laravel 6中生成PDF的教程已经结束。