{ 2010.12.17 }

CakePHPでPartialHelperはじめました

    はてなブックマーク - CakePHPでPartialHelperはじめました
    このエントリーをはてなブックマークに追加

    こんにちは。
    今週末、GALAXY Sを買うFusicサクこと桜川です。
    ついに自分もスマートフォンにランクアップです。

    さて、今回は前回と同じくCakePHPになります。
    PartialHelper」というヘルパーを作成しましたのでご紹介させて頂きます。

    PartialHelper

    CakePHPはコントローラーに特化したelementを作りにくいと思ったことはないでしょうか?

    たとえば、shopsコントローラー内のみで使うelementを作る場合
    /app/views/elements/shop_form.ctp
    とか、
    /app/views/elements/shop/form.ctp
    といったような名前やディレクトリ名を付ける必要があります。

    これが1個2個くらいなら問題ないのですが、大規模案件になってくるとelementの数も膨大で管理が大変だったり、elementの名前を考えるだけでも大変になったりします。

    また、コントローラーに特化しているにも関わらず、elementというどこからでもアクセス可能な領域に配置しないといけないところも作りにくいポイントになるかと思います。

    PartialHelperを使うとelementファイルをviewファイルと同じディレクトリに配置できるようになり、コントローラーに特化したelementを作る場合にちょっとだけ楽にしてくれます。

    PartialHelperの使い方

    kozo’s PartialHelper at master – GitHub -

    1. PartialHelperをgithubからダウンロードします。
    2. PartialHelperの配置
      「/app/views/helpers」に配置します。
    3. PartialHelperの読み込み
    4. PartialHelper用のviewファイルの配置
      「/app/views/shops/_form.ctp」に配置します。
      ※Partialのviewファイルは先頭にアンダーバーをつけます。
    5. PartialHelperの使用
      ※読み込みの場合は先頭にアンダーバーをつけません。
    6. これでブラウザから「/shops/index」アクセスすると「PartialHelperのテスト」の文言が表示されるはずです。

    ポイント

    1. viewファイルと同じ位置にPartialViewファイルを配置する
    2. PartialViewファイルはファイル名の先頭にアンダーバーをつける
    3. PartialViewファイルの中身はelementとまったく同じである
    4. $this->Partial->render()の引数は$this->element()の引数とまったく同じである
    5. 機能面も読み込むファイルの位置が違うだけでelementとまったく同じである

    まとめ

    PartialHelperを導入することで、elementが全体で共通して使う小さいviewファイル、Partialがコントローラーに特化したviewファイルと切り分けることができすっきりします。
    ぜひPartialHelperをお使いください!!

    comments

    1. Nazka より:

      @copyright Copyright (C) 2010 saku All rights reserved.
      @license www.opensource.org/licenses/mit-license.php The MIT License

      って、あるんですが。 all rights reserved (overwrite MIT)って意味でいいんですよね?
      (copyrightはよく見ますが All rights reserved と書いてあるのは、私の中では見慣れないもので)

    2. saku より:

      Nazka さま、コメントありがとうございます。

      ご指摘の通りだと思います。
      copyright が誤解を生む状態になっていましたので修正を反映致しました。

      PartialHelperはMIT Licenseで自由に使っていただいて構いません。
      是非ご利用ください!