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行目にある下記の部分を
class QrCodeHelper extends AppHelper {
下記のように変更します。
namespace App\View\Helper;
use Cake\View\Helper;
class QrCodeHelper extends Helper {
設置した Helperを読み込むために、「/src/View/AppView.php」に Helperをロードする処理を記述します。
下記の 3行目、4行目を追記します。(※追記しなくても動く場合もあります。)
public function initialize()
{
parent::initialize();
$this->loadHelper('QrCode');
}
ここまでが「cakePHP-QR-Code-Helper」を設置するための手順です。
ちなみに、プログラムの中で、「chart.googleapis.com」を呼び出す処理が「http://」になっている箇所があります。
呼び出すサイト側が「https://」の場合は、SSLの警告が表示される原因になりますので、下記の場所を修正しておきましょう。
「QrCodeHelper.php」の 55行目にある下記を修正します。
// 修正前
var $base_url = 'http://chart.googleapis.com/chart?cht=qr&chl=';
// 修正後
var $base_url = 'https://chart.googleapis.com/chart?cht=qr&chl=';
「cakePHP-QR-Code-Helper」で QRコードを表示するための手順
そして、最後は、実際に QRコードを表示する viewに下記の記述を行います。
ここからは、CakePHP2、CakePHP3共通です。
例えば、
CakePHP2の場合は「/app/View/test/index.ctp」
CakePHP3の場合は「/src/Template/test/index.ctp」
などです。
標準形は以下のようになります。
<?=$this->QrCode->text('https://blog.s-giken.net/');?>
これだけで、指定された URLの QRコードを表示することができます。
非常に簡単です。
画像を生成する GDライブラリをインストールする必要もありませんので、サーバーの環境に影響されることもありません。
「cakePHP-QR-Code-Helper」のオプションの設定の仕方
この「CakePHP QR Code Helper」には 4つのオプションが用意されています。
そのオプションの使い方を解説します。
QRコードの画像サイズを変更する
一番多くの方が利用したいのがサイズの変更ではないでしょうか。
デフォルトで表示される QRコードのサイズは「350pic × 350pic」ですのでやや大きく感じるでしょう。
そんなときは、下記のように 2つめのパラメーターにサイズを指定します。
<?=$this->QrCode->text('https://blog.s-giken.net/',["size"=>"150x150"]);?>
配列の指定の仕方が見慣れない方は、下記の方法でも問題ありません。
<?=$this->QrCode->text('https://blog.s-giken.net/',array("size"=>"150x150"));?>
QRコードは正方形ですので、基本的には縦横のサイズは同じ数値を指定します。
ただし、縦横の値が違う場合は、小さい方の値で QRコードが作成されますので、縦横のサイズが違っても問題はありません。
文字コードを指定する
今回の私の場合は、URLを QRコードにする想定ですので、文字コードを指定する必要はないのですが、日本語のテキストを QRコードにしたい場合は、文字コードによっては正しく処理されない場合があります。
そのようなときは、文字コードを指定するとうまくいく場合があるでしょう。
<?=$this->QrCode->text('https://blog.s-giken.net/',["encode"=>"Shift_JIS"]);?>
指定できる文字コードは、「UTF-8」「Shift_JIS」「ISO-8859-1」の 3つです。
デフォルトは「UTF-8」になっています。
QRコードの誤り訂正レベルを指定する
QRコードには、QRコードが汚れていたり、破損していたりしていても、コード自身でデータを復元する機能が搭載されています。
また、その復元する能力をどれ位として設定するか、を指定することができます。
<?=$this->QrCode->text('https://blog.s-giken.net/',["error_correction"=>"L"]);?>
設定できるものは下記のもので、デフォルトでは「L」が設定されています。
「L : 7%の欠損まで復元可能」
「M : 15%の欠損まで復元可能」
「Q : 25%の欠損まで復元可能」
「H : 30%の欠損まで復元可能」
QRコードの「誤り訂正機能」については下記を参照してください。
QRコード・誤り訂正機能について
https://www.qrcode.com/about/error_correction.html
画像に対する QRコードのマージン設定
QRコードは画像として提供されますが、その画像の中の QRコードがどれくらいのマージン(余白)を持って表示させるか、を指定することができます。
<?=$this->QrCode->text('https://blog.s-giken.net/',["margin"=>"4"]);?>
デフォルトは「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の関連記事
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法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」に関する記事一覧
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法
CakePHP4で定数に変数を埋め込み、翻訳機能「__()」で変数に値を入れる方法を紹介。定型の文章の一部だけを置換したい場合に利用すると便利。
-
-
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。
-
-
CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつ、テンプレートファイル、設定情報ファイルの場所とそれらをカスタマイズする方法を説明します。
-
-
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。
-
-
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法
CakePHP環境にてpostLinkで生成した削除のリンクをクリックしても処理が実行されず、JavaScriptでUncaught TypeErrorが発生。原因は同一IDを複数記述していることだった。
-
-
CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法
CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。
-
-
CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。
-
-
CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
CakePHP4のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。
-
-
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、CakePHP5でクリエビルダーを利用してテーブルからレコードを取得する際、asを使用してカラムの別名で値を取得したい場合の対応方法を解説。また、別名にはハイフンやアスタリスクなど使用できない文字がある点も解説。
-
-
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP4、CakePHP3でブラウザにキャッシュさせる設定の解説。CSS、JavaScript、画像をブラウザにキャッシュさせるのか、定期的にリロードする設定にするのかの設定が可能。