月別アーカイブ: 2019年7月

PHP wkhtmltopdf SnappyでPDF出力

今までTCPDTやmPDFを使ってたのですがHTML5 + CSS3のWebページを丸ごとPDF化する必要がありレイアウトのズレが実装できるレベルじゃなかったのでwkhtmltopdf Snappyを調べました。

環境
Windows10
XAMPP
PHP7.3

require "knp-snappy/vendor/autoload.php";
use Knp\Snappy\Pdf;
$snappy = new Pdf('"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"');
// $snappy->setBinary('"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"')
$html = <<<EOF
<style></style>
<p>ここにHTMLを書く</p>
EOF;
// PDFをブラウザに出力
//header("Content-Type: application/pdf");
//echo $snappy->getOutputFromHtml($html);
// 保存
$snappy->generateFromHtml($html, 'download.pdf');

はまった点

setBinaryなどでバイナリのパスを渡すときはコマンド扱いになるのでダブルクォーテーションで囲むのを忘れていてはまりました。

Laravel Authログイン暗号化 Hash::make

ユーザーに権限を持たせたり自分でログイン周りを実装する事になったので調べてみた。

環境
Laravel:5.5 LTS

パスワードの暗号化

Hash::make($data['password']);

データベースに登録する前に暗号化する。

ログイン時のチェック

if (Hash::check($request->pass, $result->pass)) {
    // ログイン成功の処理を書く
    return redirect()->action('Admin\MyController@index')->with('status', 'Login successful.');
} else {
    // バリデートにエラーメッセージを追加する
    return back()->withErrors('failed login attempt.');
}

Hash::makeで暗号化すると毎回違う値に暗号化されるので
Hash::checkにて暗号化されたパスワードとリクエストパスワードを比較する。

Laravel 親コントローラーやコントローラー外でのリダイレクト

ログイン周りの機能を自分で実装したときコントローラー外でリダイレクトする書き方が分からなかったので調べました。

環境
Laravel:5.5 LTS

app/Http/Controllers/Controller.php

use Illuminate\Support\Facades\Redirect;
Redirect::to('admin/login')->send();

このように書けばコントローラ外の独自クラスや親コントローラーでもリダイレクトさせられることができます。
公式ドキュメントに書いてない書き方ってどうやって調べているんだろう。