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」に関する記事一覧
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP2の検索Plugin CakeDC/Searchで重複を省くgroup by(distinct)の実装方法
CakePHP2の検索プラグイン「CakeDC/Search」で、重複レコードを省くgroup by、distinctを使う方法についての解説。設定する場所はpaginatorの条件とするので、find()関数と同じ。
-
-
CakePHP3のCakeDC/Users、Authでログインなしでもアクセスを許可する設定
CakePHP3の Authコンポーネントや CakeDC/Usersプラグインなどを利用したユーザ管理・認証システムにおいて、ログインしていなくても見ることができるページの設定方法を解説。
-
-
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。
-
-
CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法
CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。
-
-
cakephp3 カスタムバリデーションを簡易的に実装する方法
CakePHP3の独自のバリデーションをテーブルクラス内に簡単に記述する方法を解説。他のテーブルクラスでは使えないが、記述する量は少なく実装できるため、他で使わない処理を書くのには便利。
-
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
-
CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法
コントローラーからビューに送ったテーブルのオブジェクトを連想配列に変換し、ビューの中で自由に使えるようにするメソッド「toArray()」の解説。連想配列に変換できれば利用度アップ!
-
-
CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法
CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。
-
-
CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説
CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。
-
-
CakePHP3にデザインテンプレートBootstrapを導入する方法・friendsofcake/bootstrap-ui使用
CakePHP3にプラグイン「friendsofcake/bootstrap-ui」、デザインテンプレート「Bootstrap」を設置する手順を解説。Bootstrapの簡単な使い方やデフォルトのデザインとの混在方法なども解説。