ViewHelperはHTML表示や数値表現、日付判定などviewで役立つコンポーネントです。controllerで使用するHelperを指定しておくとフレームワークにてインスタンス化され、view内で使用できるようになります。ViewHelperには以下のようなものがあります。
- [cake/libs/view/helpers]
- AjaxHelper [ajax.php]
- CacheHelper [cache.php]
- FormHelper [form.php]
- HtmlHelper [html.php]
- JavascriptHelper [javascript.php]
- NumberHelper [number.php]
- SessionHelper [session.php]
- NumberHelper [number.php]
- TextHelper [text.php]
- TimeHelper [time.php]
デフォルトではHtmlHelperが有効になっています。
ViewHelperを指定する
controllerの$helpersに使用するHelper名を配列で渡します。Helper名はクラス名をそのまま指定するのではなく、HogeHelperのHogeの部分を小文字にして指定します。(HogeHelperならhoge)ちなみにこの指定方法はHelper以外でもCompenent、Modelなどでも使うで覚えておくとおいしいケーキが焼けます。:)
[app/controller/sample_controller.php]
< ?php class SampleController extends Controller { // HtmlHelper,TimeHelper var $helpers = array('html', 'time'); } ?>
ViewHelperを使用する
viewでは$hogeでHogeHelperインスタンスが使用できます。(HtmlHelperなら$html、TimeHelperなら$time)
[app/view/sample/index.thtml]
<!-- 日付判定:更新時間が1週間以内ならNew!!を表示 --> <?php if (!$time->wasWithinLast("1 weeks", $sample['modified'])) { ?> <strong>New!!</strong> <?php } ?> <!-- フォームタグ --> <?php echo $html->formTag() ?> <p>< ?php echo $html->submit('投 稿') ?></p>
>>
ViewHelperは自作する事もできます。
ViewHelperを作成する
自作ViewHelperは以下を満たすように作成します。
- クラス名を[%Helper名% + Helper]にする
- Helperクラスを継承する
- ファイル名を[%helper名% + .php]にし、[app/views/helpers]に配置する。
%helper名%はクラス名の%Helper名%を小文字に変換し、単語の区切りを[_]でつなげます。(FooBarHelperならfoo_bar)
[app/views/helpers/hello.php]
<?php class HelloHelper extends Helper { function hello($name) { return $this->output(sprintf("Hello, %s", $name)); } } ?>
あとはcontrollerの$helpersに’hello’を加えれば、viewで$hello->hello()が使用できます。
>>
■参考サイト
http://manual.cakephp.org/chapter/helpers
- Newer: 「GTD ひたすらリストを書き出す会 in 関西」
- Older: PHP 5 Power Programming
トラックバック:1
- このエントリーのトラックバックURL
- /blog/2006/08/cakephp_viewhelper.html/trackback
- Listed below are links to weblogs that reference
- CakePHP ViewHelperの使い方 from Shin x blog
- pingback from お気に入り 役立つ | Web平犯科帳 12-10-19 (金) 18:06
-
[…] http://www.1×1.jp/blog/2006/08/cakephp_viewhelper.html […]