FuelPHPでQRコードを表示する

スポンサーリンク

はじめに

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

コメント

タイトルとURLをコピーしました