CakePHP2.0 Aliasを使って拡張する

cakephp2.0_title

概要

CakePHP2.0ではAliasを使って既存のクラスを拡張しやすくなりました。

今までは、HtmlHelperクラスを継承してMyHtmlHelperクラスをつくると、利用するときには

$this->MyHtml->input();

のように書かなくてはいけなかったので、既存のコードに反映させるには、該当箇所をすべて修正しなければいけませんでした。

2.0では、

$helpers = array(‘Html’ => array(‘className’ => ‘MyHtml));

と書いておけば、既存のコードはそのままで(i.e. $this->Html->input())、拡張したクラスを利用することができます。

例として、TwitterBootstrapを利用した時のコードを紹介します。

因みにCakePHP1.3では、HuckPluginを使えば同じようなことが可能です。

準備

参考

 

Helperの作成

今回はFormHelperとSessionHelperを継承してそれぞれ、BootstrapFormHelperとBootstrapSessionHelperを作成します。

CakePHP2での変更点

  • SessionHelperのflashメソッドは引数が増えて、オプションとしてelementを指定することができるようになっています。
  • Helperのコンストラクタの引数が変わっています。

Viewの中を変更するよりは、Helper内で変更できるところは変更すれば、既存のViewの変更の量を少なくできるし、追加の変更も楽になると思います。

上のコードは足りない部分もたくさんあると思いますが、参考までに。。あとはこれらをPlugin化しておけば、使い回しができます。

すでに、Plugin化されたものやBake用のスケルトンを作っていらっしゃる方がいるので最後にgithubのURLを載せておきます。

Controllerの修正

Controller内の$helpersを以下のようにします。

public $helpers = array(‘Form’ => array(‘className’ => ‘BootstrapForm’), ‘Session’ => array(‘className’ => ‘BootstrapSession’));

 

補足(Plugin、Skel)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください