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 light=”true”]

link(‘hoge.php’, false);?>

[/php]


[php light=”true”]

[/php]

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

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

≪routes.php≫
[php light=”true”]

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

[/php]

≪controller.php≫
[php light=”true”]

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

[/php]

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