- 2008年11月11日 07:48
- CakePHP
helperのbeforeRenderで、ヘルパのプロパティを書き換える処理を行っても、viewで同じ値を参照できない。 調べたらCakePHPのバグだった。
PHP4の場合、foreachでの参照渡しができないから別のインスタンスの値を変更した事になる。
[cake/libs/view/view.php]の_renderメソッド内の以下の部分を書き換える事で対応可。
foreach ($loadedHelpers as $helper) { if (is_object($helper)) { if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) { $helper->beforeRender(); } } }
を以下のように変更。
foreach ($loadedHelpers as $name => $helper) { if (is_object($helper)) { if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) { $loadedHelpers[$name]->beforeRender(); } } }
以前、componentでも同じようなバグがあったが、RC3では直ってる様子だった。
- Newer: NetBeans6.5でCakePHPを使う
- Older: PHP + NetBeansのススメ