CakePHP3で独自のビューヘルパークラスを作成する~爆速と地味便利という最高の要素を添えて~
- 公開日
- カテゴリ:CakePHP
- タグ:PHP,helper,CakePHP,View

CakePHP のヘルパーと言えば、よくお世話になる Flash や Form, それに Paginator など色々(Text ヘルパーは地味に便利)ありますが、自身で Web アプリケーションを構築時に、テンプレートへの描画を行っていて、降ってきたパラメータに対してすごく軽微な変換処理とか行いたくて、でもヘルパーとして提供されていなくて、だからコントローラに…書くと使いまわせないし、かと言ってわざわざコンポーネント化するのも…みたいな場合、ありませんか?
それ、ViewHelper で出来ます。
今回は独自のビューヘルパークラスを作成し、テンプレート上でそれを使って独自の処理を実装します。
Contents
ヘルパークラスファイルの作成
まずは、ヘルパークラスファイルを作成します。 bake コマンドで生成できるので、CakePHP ルートディレクトリへ移動し、以下のコマンドを叩きます。
# CakePHP のルートディレクトリへ移動する
cd /path/to/cakephp
# bake コマンドでヘルパークラスファイルを生成する
bin/cake bake helper Hoge
# 実行結果
[demo@localhost cakephp]# bin/cake bake helper Hoge
Creating file /var/www/html/cakephp/src/View/Helper/HogeHelper.php
Wrote `/var/www/html/cakephp/src/View/Helper/HogeHelper.php`
Deleted `/var/www/html/cakephp/src/View/Helper/empty`
Baking test case for App\View\Helper\HogeHelper ...
Deleted `/var/www/html/cakephp/tests/TestCase/View/Helper/empty`
Creating file /var/www/html/cakephp/tests/TestCase/View/Helper/HogeHelperTest.php
Wrote `/var/www/html/cakephp/tests/TestCase/View/Helper/HogeHelperTest.php`
cakephp/src/View/Helper 配下に HogeHelper.php が生成されます。
cakephp
├─ src
│ ├─ View
│ │ ├─ Helper
│ │ │ └─ StatusHelper.php
このヘルパーファイルに、必要な機能を定義していきます。
- cakephp/src/View/Helper/HogeHelper.php
-
<?php namespace App\View\Helper; use Cake\View\Helper; use Cake\View\View; class HogeHelper extends Helper { protected $_defaultConfig = []; function get_fw_name(int $num) { switch ($num) { case 1; return 'Cakephp'; break; case 2; return 'Laravel'; break; default: return ''; break; } } }
今回は、あるパラメータを受け取って、その番号に対応する PHP フレームワーク名を返す関数を定義しました。
ヘルパーの読み込み
最後に、定義したヘルパークラスを読み込み使えるようにします。
- cakephp/src/View/AppView.php
-
<?php namespace App\View; use Cake\View\View; class AppView extends View { public function initialize() { parent::initialize(); $this->loadHelper('Hoge'); } }
ここで読み込む事で、テンプレートにてそれらのメソッドが使用可能になります。コントローラではないところがミソです。
これだけで定義は完了です。
テンプレートでの出力
それでは、ビューテンプレート内に記述して自作ヘルパーを呼び出してみます。
<?php
$num = 1;
echo $this->Hoge->get_fw_name($num);
?>
ブラウザから確認すると、
Cakephp
独自の HogeHelper で処理された値が返ってきました。
まとめ
以上で作業は完了です。
便利なヘルパー群ですが、自作のものも配置できるようになると一気に構築もはかどると思うので、是非試してみてください。