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的教程已經結束。