エス技研

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の関連記事

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で複数項目を入力した場合の AND検索、OR検索についての解説です。

VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する。
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する

VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。

CakePHP3のバージョンを指定してインストールする詳細な手順を解説
CakePHP3、CakePHP4のバージョンを指定してインストールする詳細な手順を解説

CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。

CakePHP3ログファイルの出力方法・$this->log()の解説
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説

コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。

CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順

CakePHP3で「1対多」の連携を中間テーブルを利用した「多対多」の連携に変更するときの手順のまとめ。中間テーブルの設定やModelの変更などを間違いやすい箇所を指摘しながらの解説。

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする

CakePHP4、CakePHP3でブラウザにキャッシュさせる設定の解説。CSS、JavaScript、画像をブラウザにキャッシュさせるのか、定期的にリロードする設定にするのかの設定が可能。

CakePHP 2.3 デバッグキット(DebugKit)超初心者向けフォロー講座

CakePHP初心者に向けてデバッグキット(DebugKit)のインストール方法、はまりポイントを解説。

CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()

CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。

MySQL、CakePHP 2.3で「tinyint(1)」の Boolean型の動作を再確認

MySQL+CakePHPの環境で「tinyint(1)」を利用する際の動作を検証。「tinyint(1)」の Boolean型について CakePHPでは自動処理が実施されていることを確認しました。