1. Home
  2. PHP
  3. CakePHP
  4. CakePHP3で独自のビューヘルパークラスを作成する~爆速と地味便利という最高の要素を添えて~

CakePHP3で独自のビューヘルパークラスを作成する~爆速と地味便利という最高の要素を添えて~

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

CakePHP のヘルパーと言えば、よくお世話になる Flash や Form, それに Paginator など色々(Text ヘルパーは地味に便利)ありますが、自身で Web アプリケーションを構築時に、テンプレートへの描画を行っていて、降ってきたパラメータに対してすごく軽微な変換処理とか行いたくて、でもヘルパーとして提供されていなくて、だからコントローラに…書くと使いまわせないし、かと言ってわざわざコンポーネント化するのも…みたいな場合、ありませんか?

それ、ViewHelper で出来ます。

今回は独自のビューヘルパークラスを作成し、テンプレート上でそれを使って独自の処理を実装します。

Contents

  1. ヘルパークラスファイルの作成
  2. ヘルパーの読み込み
  3. テンプレートでの出力

ヘルパークラスファイルの作成

まずは、ヘルパークラスファイルを作成します。 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 で処理された値が返ってきました。

まとめ

以上で作業は完了です。
便利なヘルパー群ですが、自作のものも配置できるようになると一気に構築もはかどると思うので、是非試してみてください。

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級