Привет кодеры, подскажите пожалуйста, у меня есть форма, после нажатия на кнопку в контроллере формируется PDF файл(так сказать инвойс). и данный файл сразу открывается на новой вкладке. Использовал данную технологию
Если вы посчитаете что библиотека не подходит то можно использовать эту
Что мне надо, мне надо реализовать так что-бы данный файл сохранялся в БД, и после этого я мог на отдельной странице вывести в столбец ид файла, имя пользователя, и кнопки скачать файл, и посмотреть файл в браузере(как это происходит в данном случае когда я нажимаю на кнопку в форме).
Вот контроллер который обрабатываю:
<?php
namespace App\Http\Controllers;
use PDF;
use Illuminate\Http\Request;
class InvoiceController extends Controller
{
public function index(){
return view('invoice');
}
public function download(Request $request)
{
$name = $request->name;
$products = [
[
'title' => 'Product 1',
'price' => 10.99,
'quantity' => 1,
'totals' => 10.99
],
[
'title' => 'Product 2',
'price' => 14.99,
'quantity' => 2,
'totals' => 29.98
],
[
'title' => 'Product 3',
'price' => 500.00,
'quantity' => 1,
'totals' => 500.00
],
[
'title' => 'Product 4',
'price' => 6.99,
'quantity' => 3,
'totals' => 20.97
],
];
$total = collect($products)->sum('totals');
$pdf = PDF::loadView('pdf.invoices', compact('products', 'total', 'name'));
return $pdf->stream('invoice.pdf');//данный файл открывает в браузере
//return $pdf->stream('invoice.pdf');//Сохраняет файл на Пк
$pdf->save();
}
}
Вот миграция
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateInvoiceUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('invoice_users', function (Blueprint $table) {
$table->id();
$table->string('name_user');
$table->string('name_file');
//data
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('invoice_users');
}
}
Вот файл инвойса
<!DOCTYPE html>
<html>
<head>
<title>Invoice Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div style="width: 100%; max-width: 960px; margin: auto">
<table width="100%">
<tr style="border-bottom: 1px solid #000000">
<td><h2>Invoice</h2></td>
<td style="text-align: right"><h3>Order # 12345</h3></td>
</tr>
<tr>
<td style="padding-bottom: 16px;">
<strong>Billed To:</strong><br>
{{ $name }}<br>
1234 Victory Avenue<br>
Apt. 5D<br>
Sunfield, ST 54321
</td>
<td style="text-align: right; padding-bottom: 16px;">
<strong>Shipped To:</strong><br>
John Smith<br>
1234 Victory Avenue<br>
Apt. 5D<br>
Sunfield, ST 54321
</td>
</tr>
<tr>
<td>
<strong>Payment Method:</strong><br>
Visa ending **** 4242<br>
jsmith@email.com
</td>
<td style="text-align: right">
<strong>Order Date:</strong><br>
March 7, 2014<br><br>
</td>
</tr>
<tr>
<td colspan="2">
<h3>Order summary</h3>
</td>
</tr>
<tr>
<td colspan="2">
<table width="100%" cellpadding="0" cellspacing="0" border="1">
<thead>
<tr style="background-color: #eee">
<th style="text-align: left; padding: 5px 10px;">Item</th>
<th style="text-align: center; padding: 5px 10px;">Price</strong></th>
<th style="text-align: center; padding: 5px 10px;">Quantity</th>
<th style="text-align: right; padding: 5px 10px;">Totals</th>
</tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td style="text-align: left; padding: 5px 10px;">{{ $product['title'] }}</td>
<td style="text-align: center; padding: 5px 10px;">{{ $product['price'] }}</td>
<td style="text-align: center; padding: 5px 10px;">{{ $product['quantity'] }}</td>
<td style="text-align: right; padding: 5px 10px;">{{ $product['totals'] }}</td>
</tr>
@endforeach
<tr>
<td colspan="2"></td>
<td style="text-align: center; padding: 5px 10px;"><strong>Totals</strong></td>
<td style="text-align: right; padding: 5px 10px;">{{ $total }}</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>