エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」

      2019/04/20

CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」

 

「cakePHP-QR-Code-Helper」はファイルを設置するだけ

 
「cakePHP-QR-Code-Helper」は、CakePHP2用に作られてた QRコード(二次元バーコード)を作成し、表示するためのライブラリです。
 
内部では Googleのグラフを表示する APIの「Google Chart API」が使われています。
そのため、画像を作成するためのプラグインやライブラリを別途インストールする必要がありません。
 
「cakePHP-QR-Code-Helper」の 1ファイルを FTPでアップして、それを呼び出す処理を記述するだけでOK。
ライブラリのインストールなどができないレンタルサーバでも全く問題なく動作させることができます。
 
 

CakePHP2用 QRコードヘルパー「cakePHP-QR-Code-Helper」の設定の手順

 

「cakePHP-QR-Code-Helper」をダウンロードし、設置

 
該当の CakePHP2用 QR Code Helperは下記に置いてあります。
 
muxe/cakePHP-QR-Code-Helper
https://github.com/muxe/cakePHP-QR-Code-Helper
 
READMEに書いてあるように、上記の GitHubから「/app/View/Helper/QrCodeHelper.php」をダウンロードします。
 
CakePHP2の場合は、下記に設置します。
「/app/View/Helper/QrCodeHelper.php」
 
CakePHP3の場合は、下記に設置します。
「/src/View/Helper/QrCodeHelper.php」
 
 

「cakePHP-QR-Code-Helper」を CakePHP3で使うためのカスタマイズ

 
CakePHP2の場合は、設置すればすぐに使えますので、この項の「CakePHP3のカスタマイズ」は読み飛ばしてください。
 
 
CakePHP3の場合は、「QrCodeHelper.php」の一部を変更します。
 
11行目にある下記の部分を

 
下記のように変更します。

 
 
設置した Helperを読み込むために、「/src/View/AppView.php」に Helperをロードする処理を記述します。
下記の 3行目、4行目を追記します。(※追記しなくても動く場合もあります。)
 

 
ここまでが「cakePHP-QR-Code-Helper」を設置するための手順です。
 
 
ちなみに、プログラムの中で、「chart.googleapis.com」を呼び出す処理が「http://」になっている箇所があります。
呼び出すサイト側が「https://」の場合は、SSLの警告が表示される原因になりますので、下記の場所を修正しておきましょう。
 
「QrCodeHelper.php」の 55行目にある下記を修正します。
 

 
 

「cakePHP-QR-Code-Helper」で QRコードを表示するための手順

 
そして、最後は、実際に QRコードを表示する viewに下記の記述を行います。
ここからは、CakePHP2、CakePHP3共通です。
 
例えば、
CakePHP2の場合は「/app/View/test/index.ctp」
CakePHP3の場合は「/src/Template/test/index.ctp」
などです。
 
標準形は以下のようになります。

 
 
これだけで、指定された URLの QRコードを表示することができます。
 
非常に簡単です。
画像を生成する GDライブラリをインストールする必要もありませんので、サーバーの環境に影響されることもありません。
 
 


 

「cakePHP-QR-Code-Helper」のオプションの設定の仕方

 
この「CakePHP QR Code Helper」には 4つのオプションが用意されています。
そのオプションの使い方を解説します。
 
 

QRコードの画像サイズを変更する

 
一番多くの方が利用したいのがサイズの変更ではないでしょうか。
デフォルトで表示される QRコードのサイズは「350pic × 350pic」ですのでやや大きく感じるでしょう。
 
そんなときは、下記のように 2つめのパラメーターにサイズを指定します。
 

 
配列の指定の仕方が見慣れない方は、下記の方法でも問題ありません。
 

 
QRコードは正方形ですので、基本的には縦横のサイズは同じ数値を指定します。
ただし、縦横の値が違う場合は、小さい方の値で QRコードが作成されますので、縦横のサイズが違っても問題はありません。
 
 

文字コードを指定する

 
今回の私の場合は、URLを QRコードにする想定ですので、文字コードを指定する必要はないのですが、日本語のテキストを QRコードにしたい場合は、文字コードによっては正しく処理されない場合があります。
そのようなときは、文字コードを指定するとうまくいく場合があるでしょう。
 

 
指定できる文字コードは、「UTF-8」「Shift_JIS」「ISO-8859-1」の 3つです。
デフォルトは「UTF-8」になっています。
 
 

QRコードの誤り訂正レベルを指定する

 
QRコードには、QRコードが汚れていたり、破損していたりしていても、コード自身でデータを復元する機能が搭載されています。
また、その復元する能力をどれ位として設定するか、を指定することができます。
 

 
設定できるものは下記のもので、デフォルトでは「L」が設定されています。
 
「L : 7%の欠損まで復元可能」
「M : 15%の欠損まで復元可能」
「Q : 25%の欠損まで復元可能」
「H : 30%の欠損まで復元可能」
 
QRコードの「誤り訂正機能」については下記を参照してください。
 
QRコード・誤り訂正機能について
https://www.qrcode.com/about/error_correction.html
 
 

画像に対する QRコードのマージン設定

 
QRコードは画像として提供されますが、その画像の中の QRコードがどれくらいのマージン(余白)を持って表示させるか、を指定することができます。
 

 
デフォルトは「4」となっています。
「0」以上の数値を指定することができます。マイナスを記述してもマイナスはないものとして扱われるようです。
 
マージン「4」の単位は「行(rows)」となっています。「ピクセルではありません」と書いてあります。
ただ、「行(rows)」が何を意味するのかがいまいちよく分かりません...
 
 


 

「cakePHP-QR-Code-Helper」を導入することになった経緯

 
Googleの URL短縮ツール「Google URL Shortener」が 2019年03月30日に停止しましたが、その期限が迫ってきていました。
 
そのため、新しい「URL短縮ツール」を探していたのですが、サービスを終了する「URL短縮サービス」も少なくないため、だったら自分で作ればいいんじゃないか、ってことで作ることにしました。
 
詳しい話は「URL短縮サービス「TTTオンライン(https://ttt.onl)」公開」に記事を書いています。
 
また、URL短縮ツール「TTTオンライン」は、以下になります。
 https://ttt.onl
 
ちなみに、「.onl」は「.online」を短縮させたドメインだそうです。
 
 

超簡単「cakePHP-QR-Code-Helper」ライブラリを発見!

 
このツールを作成する中で、短縮化した URLを QRコード(二次元バーコード)として提供できないか、と考えました。
そして、見つけたのが今回紹介する「cakePHP-QR-Code-Helper」です。
 
この「cakePHP-QR-Code-Helper」は、CakePHP2用のライブラリですが、Helperとして作られていますので、1ファイルを置くだけですぐに使える、というところが非常に魅力的なライブラリでした!!
 
 
サーバ内で画像を作成するわけではありませんので、サーバに GDライブラリをインストールする必要もありません。
なので、プラグインなどがインストールできないレンタルサーバであっても、SSHが使えないレンタルサーバであっても問題ありません。
また、サーバの仕様によってはもしかしたら動かないかもしれない...なんてことを心配する必要もありません。
 
 
ただ、提供されていたのは CakePHP2用でしたので、CakePHP3で使うためには少し改造が必要でした。
と言っても、数行でしたが。
 
皆さんにもお役に立つといいなと思います!
 
 
ちなみに、この「cakePHP-QR-Code-Helper」をプレーンの PHPで利用する方法を下記で記事を書いています。
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
 
また、この「cakePHP-QR-Code-Helper」を使った QRコード(二次元バーコード)作成サービスを作成しました。
その記事を下記に書きました。
QRコード(二次元バーコード)作成サービスを公開
 
QRコード(二次元バーコード)作成サービス自体は下記にあります。
https://s-giken.info/qrcode/index.php
 
 

CakePHP3の関連記事

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3で「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」などのエラーが出たときの確認するポイント
CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力

CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。

CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法

CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。

CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法

CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。

CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説
CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説

CakePHP3からメールを送信する方法解説。基本的な記述方法を基にして、テンプレートを使う方法、ファイルを添付する方法へと拡張しながら解説。

CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合

ID以外のカラムでアソシエーション(連携)させるための考え方とサンプルソースを用いての説明を行っています。

CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを

CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。

CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。

CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法
CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法

CakePHP3の標準設定のタイムゾーンは「UTC(協定世界時)」に設定されている。これを日本標準時に変更する方法(app.php、bootstrap.phpの変更方法)の解説。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP 2.3で saveの便利な使い方・サンプルソース付き

CakePHPのレコードを保存、更新する際に使う Saveを詳細解説します。