[ステップアップ! CakePHP] View で Helper を使う

No Photo

イメージ

こんにちは、ichikawaです。
今回は CakePHP 連載の 3 回目「ビューでヘルパーを使う」方法をご紹介いたします。

Helper (ヘルパー) とは?

例えばタグの出力を補助したり、制御したりといった、Viewをサポートする役目をします。
コントローラーに対するコンポーネント。モデルに対するビヘイビア。この関係性が、ビューに対するヘルパーに当たります。
各Viewで共通で使う処理などをヘルパーとしてまとめておけば、開発効率もアップします。

設置場所

app/view/helpers以下に配置します。

命名規則

ファイル名は、作成するHelperクラスから「Helper」を削除したヘルパー名をcamel_case形式にしたものになります。
「LinkHelper」の場合、「link.php」となります。

コアヘルパーと自作ヘルパー

CakePHPには、既に用意されているコアヘルパーの他に、自分でヘルパーを作る事も可能です。
コアヘルパーの使い方は、こちら(HTMLヘルパー)こちら(Formヘルパー)などを参考になさってください。
今回は簡単な自作のヘルパーを作成して、実際にビューから使ってみたいと思います。

自作ヘルパーの作り方

ヘルパーの基本構造は以下のようになります。 (公式マニュアルより引用

class LinkHelper extends AppHelper {

    function makeEdit($title, $url) {
        // 特別な形式のリンクを作成するロジックをここに記述する
    }

}

ここでは「Linkヘルパー」というリンクを作成するヘルパーを例に挙げています。
あちこちのビュー内で使いたい機能は、このようにヘルパー化することにより簡単に共有する事ができます。便利ですね!

ビューで作成したヘルパーを使用する

基本的な方法としては、まず以下のようにヘルパー名("Helper" の部分は取り除きます)をコントローラーから指定します。

class SimpleController extends AppController {

    var $helpers = array('Link');

}

次にビューからLinkヘルパーのmakeEditメソッドを使ってみましょう。

<?php echo $link->makeEdit('編集', '/blog/edit/') ?>

ヘルパー内で他のヘルパーを読み込む

ヘルパー内で、別のヘルパーを読み込むことも可能です。
コントローラと同じように $helpers 配列を使用してヘルパーを指定します。(公式マニュアルより引用

class LinkHelper extends AppHelper {
    var $helpers = array('Html');

    function makeEdit($title, $url) {
        // HTML ヘルパーを使用して整形されたデータを出力する
        // データのフォーマット:

        $link = $this->Html->link($title, $url, array('class' => 'edit'));

        return $this->output("
$link
"); } }

以上、ヘルパーのご紹介と使い方でした。
次回は「サードパーティのコンポーネント、ヘルパー、プラグインまとめ」です。お楽しみに!

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ