[ステップアップ! CakePHP] View で Helper を使う
こんにちは、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");
}
}
以上、ヘルパーのご紹介と使い方でした。
次回は「サードパーティのコンポーネント、ヘルパー、プラグインまとめ」です。お楽しみに!