CakePHPでjsファイルをPHPで生成したい

最近、業務でCakePHPをいじっているのですが、jsファイルをPHPで生成したかったので、その方法を下記します。

一般的には拡張子をphpのままでjavascriptの内容を吐き出すという方法(下記URL参照)があります。

http://hal-lab.cocolog-nifty.com/blog/2009/03/cssjsphp-bfe1.html

しかしながら、CakePHPのjavascriptヘルパーでそのファイルを指定しようとすると、拡張子がjsに自動変換されてしまいます。

≪テンプレート≫


<?php echo $javascript->link('hoge.php', false);?>


<script type="text/javascript" src="/js/hoge.php.js"></script>

どう解決しようか、javascriptヘルパーを継承したクラスでも作ってオーバーライドでもしようかと思いましたが、CakePHPのバージョンアップ等を考えると、スマートじゃないと・・・

そこで、下記のようにroutes.phpで、jsファイルパスでアクセスしたら、無理やりコントローラに渡す方法にしてみました。

≪routes.php≫


Router::connect('/js/hoge.js', array('controller' => 'hogecons', 'action' => 'hoge'));

≪controller.php≫


class HogeconsController extends AppController
{
    var function ui_config()
    {
        $this->set('hoge', $hoge);
        $this->layout = 'ajax';
    }
}

設計思想に反しているかもしれませんが、とりあえず動いたので良しとします。


Article written by

Please comment with your real name using good manners.

Leave a Reply