CakePHP のヘルパー設定で嵌った件
CakePHP 1.3で作られたウェブサービスをメンテナンスしてるのですが、先日ヘルパー部分でハマってしまったのでメモかねてエントリ。
まず前提として、cake/libs/controller/controller.php
の __mergeVars()
を見ると分かるのですが、CakePHP はヘルパーとかを AppController と現在のコントローラーのプロパティをマージして使ってます。
なので例えば以下のように書けば Hoge と Fuga の2つのヘルパーが読み込まれます。
1 2 3 4 5 6 7 8 9 |
|
で、ここで私が1つ勘違いしていたことがあって、私は AppController に書いたやつと現在のコントローラーに書いたやつ「だけ」が読み込まれると思っていました。
以下のように AppController に helpers プロパティがなかったら Hoge の1つだけが読み込まれると思っていたわけです。
1 2 3 4 5 6 7 8 |
|
しかし、実際は AppController の親クラスである Controller の helpers プロパティでいくつか設定されてるので、 Hoge, Session, Html, Form の4つのヘルパーが読み込まれるんですね。
これを知らなくて、 AppController に Fuga とだけ書いて暫く嵌ってしまいましたとさ。ちゃんちゃん。