CakePHP1.2のビューキャッシュ(nocacheについて)

ビューキャッシュを使うとかなりパフォーマンスが向上するらしい。

静的なページには物凄く簡単に使える。
使い方もすぐ出てくる。

core.phpのConfigure::write(’Cache.check’, true);にして、
使いたいコントローラで、ヘルパーにキャッシュを追加して、var $helpers = array(’Cache’);
var $cacheAction = array(’index’ => 86400);って変数にアクションと保持する時間を決めてあげる。

問題は、キャッシュしたくない部分。

マニュアルを見ると、

<cake:nocache>で囲めばいいよと書いてあるだけ。
たしかに、出来るキャッシュファイルを見ると、囲った部分はこのまま残ってるから効いてるんだけど、
キャッシュがあるとアクションが呼ばれないので、上記の例だと$this->setで設定していた$newProductsがないのでエラーが出る。

じゃあどう値を取得すればいいのかなと思って、調べてみた。

続きを読む…

このページのトップに戻る
投稿日:2008/10/15  投稿者:zuya  コメント(2)

CakePHP1.2のbeforeValidate

beforeValidateなるコールバックメソッドがあった。

model内にあると、validateの直前に呼んでくれるようだ。

model内でvalidate前に値を加工したいときは便利。

$this->dataに値が入ってるので、加工する。

このページのトップに戻る
投稿日:2008/10/9  投稿者:zuya  コメント(0)

CakePHP1.2のcounterCache

1.1にもあったのかもしれないけど、1.2はModelにcounterCacheって便利な機能がある。

modelがアソシエーションしてるときに、model名_countってカラムを用意しといて、

bindModelのときに’counterCache’ => trueを指定しとくと、勝手に数を数えて増減を登録してくれらしい。

詳しい説明はここにある。

使ってみたけど、たしかに便利。

でもこれを使ってると、bindModel($params, $reset = true)の$reset=falseが効かなくなるのね。

なので、うまくつかわないと$this->paginateが使えなくなっちゃうね。
※この記事参照

僕の書き方が悪かったんだけど、いきなり動かなくなるからあせった。

ソース読んでないからなんともいえないけど、両立する方法もあるのかな。

※追記
使いたいときだけ下記のようにmodel内でbindModelしてつかってた。

で、save()の時はうまく動いてたんだけど、del()の時はうまく動かなかった。

modelのソースを見たら、下記のようにカウンターキャッシュのメソッド(updateCounterCache())を読んでた。

del()の時は、delete分の前にselectを読んでるので、その時点でbindModelの情報がなくなってたみたい。
$this->belongsToが空になってた。
なので、

としたら、うまくカウンターキャッシュが動いてくれた。

ほんとかどうか自信がないや。
使い方が間違ってるのかもしれない。

このページのトップに戻る
投稿日:2008/9/11  投稿者:zuya  コメント(0)

CakePHPのafterSave

modelにafterSaveってメソッドを作っとくと、save後に自動で呼んでくれる。

今回は使わなかったからいいけど、パラメータを渡したい場合どうしたらいいのかが、いまいちよくわかんないな。

save時のidは、保持してるからそれを使ってなんとかしろってことかな。

idだけじゃなんともなら内場合は、変数に保持させとくしかないのか。

あとあんまり関係ないけど、model内で別のmodelを呼びたい場合は、リレーションにすると呼べるのね。

このページのトップに戻る
投稿日:2008/8/26  投稿者:zuya  コメント(0)

CakePHP1.2のラジオボタン

1.2のformヘルパーのラジオボタンのメモ

こんな風に書くと

こんな風になる。

hiddenが勝手にできるのはいいけど、Radioがジャマだった。

こうしたら消えてくれた。

間を空けたい場合はセパレータに空白でも渡してあげればいい。

忘れそうだから自分用にメモ

このページのトップに戻る
投稿日:2008/7/10  投稿者:zuya  コメント(0)