ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

Helper中でコントローラにアクセスしたい時

generatorを使ってcontrollerだけを生成すると、helperも一緒に生成してくれるのは良いのですがAkActionViewHelperを継承してくれません。このため、$this->_controllerが使えないです。

例:

DOS> php .\script\generate Hoge
The following files have been created:
C:\...\app\controllers\hoge_controller.php
C:\...\app\helpers\hoge_helper.php
C:\...\test\functional\controllers\hoge_controller.php
C:\...\test\fixtures\app\controllers\hoge_controller.php
C:\...\test\fixtures\app\helpers\hoge_helper.php

hoge_helper.php の中身 :

<?php

class HogeHelper
{
}

?>

なんで、ここに適当なメソッドつけて

class HogeHelper {
    function hoge() {
        $this->_controller->...

とやってみたら、「"_controller"なんてメンバ変数定義されてないよ」と怒られたんですね。「Fatal error: Call to a member function on a non-objec」です、ハイ。

というわけで、generatorでcontroller単体だけ生成したときのhelper内でcontrollerを使いたくなったら、AkActionViewHelperを継承させないと駄目みたいです。

class HogeHelper extends AkActionViewHelper
{
...

これでおけ。