laravel-admin で PDFサンプル出力。そしてGrid一覧画面の右端メニューをアイコンに設定変更 config/admin.php grid_action_class
目次
laravel-dompdfライブラリでPDFサンプル出力
参考サイトはこちら
laravel-dompdfライブラリ のインストール
cd 対象のlaravelフォルダへ移動し、
composer require barryvdh/laravel-dompdf
次に、
composer.json
に"barryvdh/laravel-dompdf
が入っていることが確認
"require": {
・・・
"barryvdh/laravel-dompdf": "^2.0",
・・・
設定する
config/app.php に以下を追加する
'providers' => [
・・・
Barryvdh\DomPDF\ServiceProvider::class,
・・・
],
・・・
'aliases' => [
・・・
'PDF' => Barryvdh\DomPDF\Facade::class,
・・・
],
日本語を表示するための設定
以下よりフォントをダウンロードする
strage 配下に fonts ディレクトリの作成し、ダウンロードしたフォントを配置
laravel実装
app>Admin>Controllers>SampleController.php
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
use App\Models\User;
use PDF;
class SampleController extends AdminController
{
public function pdf_sample()
{
$pdf = PDF::loadView('pdf_sample');
return $pdf->download('pdf_sample.pdf');
// return $pdf->stream('pdf_file.pdf');
}
}
app>routes.php でルーティングの設定
<?php
use Illuminate\Routing\Router;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
'as' => config('admin.route.prefix') . '.',
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('home');
$router->get('/pdf/dl/{customer_id}', 'PdfController@index')->name('pdf.dl');
$router->get('/pdf/view/{customer_id}', 'PdfController@view')->name('pdf.view');
$router->resource('users', UserController::class);
$router->resource('blogs', BlogController::class);
$router->resource('authors', AuthorController::class);
$router->resource('books', BookController::class);
$router->get('/pdfsample', 'SampleController@pdf_sample')->name('pdf_sample');
});
resource>views>pdf_sample.blade.php ビューの作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<h1>PDF Sample</h1>
<p>Hello World</p>
</body>
</html>
http://localhost/sales/public/admin/pdfsample へアクセスするとpdfダウンロードができました。
Grid(一覧)右端のメニューをアイコンに変更(config/admin.phpのgrid_action_class)
config/admin.phpファイルのgrid_action_classを変更
/*
|--------------------------------------------------------------------------
| The global Grid action display class.
|--------------------------------------------------------------------------
*/
//'grid_action_class' => \Encore\Admin\Grid\Displayers\DropdownActions::class,
'grid_action_class' => \Encore\Admin\Grid\Displayers\Actions::class,
app>Admin>Controllers>BookController.php の Grid に以下を追加
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Book());
$grid->quickSearch('title');
$grid->column('id', __('Id'));
$grid->column('title', __('Title'));
$grid->column('author_id', __('Author id'));
// リレーション
$grid->column('author.first_name', __('Author FirstName'));
$grid->column('author.last_name', __('Author LastName'));
$grid->column('page', __('Page'));
$grid->column('subtitle', __('Subtitle'));
$grid->column('price', __('Price'));
$grid->column('created_at', __('Created at'));
$grid->column('updated_at', __('Updated at'));
//「操作」列にボタンの追加
$grid->actions(function ($actions) {
//form等のURLを指定する。
// $actions->prepend('<a href="./pdfsample'.$actions->getKey().'/edit"><button type="button" class="btn btn-primary btn-xs">PDF</button></a></br>');
$actions->prepend('<a href="./pdfsample"><button type="button" class="btn btn-primary btn-xs">PDF</button></a></br>');
});
return $grid;
}
アイコンが表示されるようになり、PDFボタンが追加できました。
ちなみに、デフォルトは、
次は、
- データベースからのデータをPDF出力
-
前の記事
laravel-admin Controller grid、detail、form でリレーション → エクスポート機能どうなるか、その他Quick search機能 2023.08.28
-
次の記事
JasperReports 帳票開発ライブラリの学習 主なOutline(セクション)について 2023.09.07