はじめに
FuelPHPでQRコードを表示する方法のメモです。
下記で FuelPHPで QRコードを作成するためのパッケージを公開している人がいるので、これを使います。
GitHub - steadweb/fuel-qrcode: QRCode libraries namespaced into FuelPHP package
QRCode libraries namespaced into FuelPHP package. Contribute to steadweb/fuel-qrcode development by creating an account ...
適当な場所で cloneします。
% git clone git@github.com:steadweb/fuel-qrcode.git
cloneした内容は FuelPHP のパッケージ形式になっているので、これをそのまま fuel/packages 以下に配置します。
下記の例では qrcode という名前で配置しています。
% mv -i fuel-qrcode /path/to/anywhere/fuel/packages/qrcode
使用方法
Controller クラスで単純に表示させるだけであれば下記で表示することができます。
\Package::load("qrcode");
echo \QRCode::png('1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPARSTUVWXYZ');
真面目にヘッダ等を設定し、QRコードをキャッシュさせないようにするならこんな感じでしょうか。
// $str に QRコードとして表示したい文字列が入っている
\Package::load("qrcode");
$response = new Response();
$response->set_header('Content-Type', 'image/png');
$response->set_header('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate');
$response->set_header('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
$response->set_header('Pragma', 'no-cache');
echo \\QRCode::png($str);
return $response;
ちなみに、config.php の always_load に qrcode を記載すれば \\Package::load("qrcode");
の指定は不要ですが、QRコードパッケージを毎回読み込みたいような仕様というのはあまり無さそうなので、毎回 \\Package::load("qrcode");
を指定で良いと思います。
php-gdのエラー
実行時に下記のようなエラーが出ることがありました。
これは php-gd
が入っていないことが原因なので、 yum install php-gd
等各ディストリビューションに沿った形で php-gd
をインストールしましょう。
Error - Call to undefined function ImageCreate() in /project/cqs/fuel/packages/qrcode/classes/qrimage.php on line 74
コメント