エス技研

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の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP 2.3 主キー(ID)以外のキーで更新方法 updateAll

主キー(ID)以外のカラムをキーとして更新する方法、updateAllの使い方をサンプルを用いて解説します。

CakePHP3のインストールでURL rewriting......のエラーが!その解決方法解説
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説

CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。

CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2
CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2

ファイルのアップロード機能の自作サンプルコードとその解説のその2。アップロード機能に関連するファイルの更新や削除の処理や画像、フォルダのパスの指定方法などを含めて解説。

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説
CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説

入力された値によってバリデーション(入力チェック)の内容を切り替える。その処理をCakePHPで実装する方法を解説。条件ごとに unset関数を使ってバリデーションを削除する、という方法を採る。

CakePHP 2.3でOn Duplicate Key構文を実装

CakePHPで On Duplicate Key構文を Queryを利用して実装する方法をサンプルソース付きで解説します。

CakePHP3のユーザ管理・認証プラグイン CakeDC/Usersの導入・機能解説・3.1.5対応
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応

CakePHP3のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。

CakePHP 2.3でファイルのアップロード処理を作る

CakePHPでプラグインを使わないファイルアップロード処理を解説します。簡単です。DBにファイルを格納する方法も。

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。