2008年10月23日木曜日

CAKEPHP1.2 SEHLLを継承したAppShellでモデルが使えない。

CAKEPHP1.2 RC3です。

shellを継承したAppShellクラスを作って、そいつを継承したShellを実行したら

モデルオブジェクトがundefinedになってしまう。

Shellクラスのinitialize()メソッド(cake/console/libs/shell.php 163行目)

を呼ぶ必要があるんだけど、こいつが、

Shell.php の実行時にしか呼ばれない(cake/console/cake.php 305行目あたり)。

くわしくいうと、親クラスがShellClassの場合しか呼ばれない。

つまり、ShellClassを継承したAppShellClassを継承した孫クラスでは

親クラスがAppShellClassになるため、呼ばれないみたいです。

startupをオーバーライドしてたので、今回はそこに、

parent::initialize();

を書いたけど、Taskを使う場合は、loadTasks()などの処理も必要。

(__constructをオーバーライドしてそこで、書いてもいいけど。)

うーん、こんなもんですか?

0 件のコメント:

コメントを投稿