前回までの状況はこちら。
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/hotel-mng
さて、今回は、前回作成したコードで生成した解錠コードをQRコードに変換します。
使用するのは、simplesoftwareio/simple-qrcodeというライブラリ。
Laravelのプロジェクトディレクトリにて、以下のコマンドを実行。
$ composer require simplesoftwareio/simple-qrcode
いま使用しているLaravelのバージョンは5.5.*なのでこれだけでライブラリが使用可能になります。
では、解錠コード生成処理を修正します。
use QrCode;
public function add($param, $room, $user)
{
Log::debug(print_r($param ,true));
$model = new ReserveManagement;
foreach($this->paramNames as $name)
{
$model->$name = $param[$name];
}
$model->lock_number = $this->generateLockNumber();
$src = base64_encode(QrCode::format('png')->size(100)->generate($model->lock_number));
Log::debug(print_r($src ,true));
$model->save();
$this->attachToRoom($model, $room);
$this->attachToSchedule($model);
$this->attachToUser($model, $user);
}
QrCodeクラスを使って解錠コードをpngファイルで生成、それをbase64に変換しています。
これは、とりあえずログに出力させています。
[2020-02-07 10:06:26] local.DEBUG: iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB3UlEQVR4nO2b24rEIBAFd8L+/yeHfRMWQbrsNjozVa+Ty1CcQ4zG133fPxLj2v0H3gllAZQFUBZAWQBlAZQFUBZAWQBlAZQFUBZAWQBlAZQFUBZAWYDfudOuK2W5Tc/21+lnbtsxg7Pm7k4xWQBlASZr2ECRHpRurlnJu1NMFkBZgGwNG4OQD8oyeNJVVaxwYdRkAZQFKKthFck+LsVkAZQFOKWGkZfE7ZgsgLIAZTWca01V157prMkCKAuQrWFy3iPybjgYneZnXRAmC6AswOuQsZ+D0k9DWYCF64ZoBTCycjH3WCyc8zFZAGUBsk/D8vX3yOlVV6aYLICyAPU17El2BL0ALh3KmiyAsgD1M6XJkSe6V4TC9UeTBVAWYPJpGMl2VfvQlOnS0anJAigLMPk0jCS5Pwa990V4+EsbkwVQFmDzDou5acy5L1EdlD6KsgCbd1hUHbzuPfTfX6q60DegLMDmHRYRkh/PuG64B2UBNn/aPahGcgEx8hPFZAGUBTh3h0WjamdxHpMFUBZg8w6LwemtUMkJmcJimiyAsgCbd1j010FLIX7Mdi7KApyyw+ItMFkAZQGUBVAWQFkAZQGUBVAWQFkAZQGUBVAWQFkAZQGUBVAWQFkAZQH+AEkJCJS/ZGd/AAAAAElFTkSuQmCC
これは後ほど、HTMLメールのimgタグのsrc要素に書き込んで使用することを考えています。
これをブラウザで表示させてみましょう。
以下をアドレスバーに入力するとQRコードが表示されます。
data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB3UlEQVR4nO2b24rEIBAFd8L+/yeHfRMWQbrsNjozVa+Ty1CcQ4zG133fPxLj2v0H3gllAZQFUBZAWQBlAZQFUBZAWQBlAZQFUBZAWQBlAZQFUBZAWYDfudOuK2W5Tc/21+lnbtsxg7Pm7k4xWQBlASZr2ECRHpRurlnJu1NMFkBZgGwNG4OQD8oyeNJVVaxwYdRkAZQFKKthFck+LsVkAZQFOKWGkZfE7ZgsgLIAZTWca01V157prMkCKAuQrWFy3iPybjgYneZnXRAmC6AswOuQsZ+D0k9DWYCF64ZoBTCycjH3WCyc8zFZAGUBsk/D8vX3yOlVV6aYLICyAPU17El2BL0ALh3KmiyAsgD1M6XJkSe6V4TC9UeTBVAWYPJpGMl2VfvQlOnS0anJAigLMPk0jCS5Pwa990V4+EsbkwVQFmDzDou5acy5L1EdlD6KsgCbd1hUHbzuPfTfX6q60DegLMDmHRYRkh/PuG64B2UBNn/aPahGcgEx8hPFZAGUBTh3h0WjamdxHpMFUBZg8w6LwemtUMkJmcJimiyAsgCbd1j010FLIX7Mdi7KApyyw+ItMFkAZQGUBVAWQFkAZQGUBVAWQFkAZQGUBVAWQFkAZQGUBVAWQFkAZQH+AEkJCJS/ZGd/AAAAAElFTkSuQmCC
スマホで読み取ると、
データベース上では、
うまくできているようです!
「【Laravel】【ホテル予約管理】解錠ナンバーをQRコードに変換する」への1件のフィードバック